Webdriver API之元素定位

2022-08-25 15:42:22 字數 3621 閱讀 5677

webdriver提供了8種元素定位方法:id、name、class name、tag name、link text、partial link text、xpath、css selector

一、以上8種元素定位,webdriver提供兩套寫法

1. 用by定位元素:通過by來宣告定位的方法,需引入by模組

find_element(by.id,"kw")

find_element(by.name,"wd")

2. 直接定位

find_element_by_id("kw")

find_element_by_name("wd")

二、定位一組元素

定位一組元素一般用於以下場景:

批量操作元素,例如勾選所有的核取方塊

先獲取一組元素,元素物件以列表形式返回,再從這組物件中過濾出需要操作的元素。例如定位出頁面所有的checkbox,然後選擇其中的乙個進行操作

#選擇頁面上所有的tag name為input的元素

10 inputs = driver.find_elements_by_tag_name('

input')

1112

#然後從中過濾出tpye為checkbox的元素,單擊勾選

13for i in

inputs:

14if i.get_attribute('

type

') == '

checkbox':

15i.click()

1617 driver.quit()

如何勾選一組元素中的某乙個選項呢?

1

#列印當前頁面上type為checkbox的個數

2print

len(checkboxes)34

#把頁面上最後1個checkbox的勾給去掉

driver.find_elements_by_css_selector('input[type=checkbox]').pop().click()5#

pop()或pop(-1) 預設獲取一組元素中的最後乙個6#

pop(0) 預設獲取一組元素中的第乙個7#

pop(1) 預設獲取一組元素中的第二個8#

。。。。

三、8種元素定位1. id定位html規定id屬性在html文件必須是唯一的。

find_element_by_id("kw")

2. name定位

name的屬性值在html頁面種可以不是唯一的。

find_element_by_name("wd")

3. class定位

通過class屬性值來定位元素:

find_element_by_class_name("bg s_btn")

4. tag定位

通過、、等tag來定位元素:

find_element_by_tag_name("input")

5. link定位

6. partial link定位

對link定位的一種補充,有些文字鏈結比較長,這個時候取文字的部分資訊來定位元素(條件是能唯一標識這個鏈結)

find_element_by_partial_link_text("[百]度新[聞]")

7. xpath定位

xpath是一種在xml文件種定位元素的語言,因為html頁可看作xml的一種實現。xpath定位方法實現基本可以到99%

策略:(1)絕對路徑定位(不建議,因對頁面的應變性太差)

(2)利用元素屬性定位(元素的任意屬性都可以,只要是唯一)

find_element_by_xpath("//input[@id='kw']")

find_element_by_xpath("//*[@maxlength='100']")

(3)屬性與層級結合

find_element_by_xpath("//span[@class='bg s_ipt_wr']/input[2]")

(4)使用邏輯運算子

find_element_by_xpath("//input[@id='kw' and @class='su']")

8. css定位

css是一種語言,它用來描述html和xml文件的表現。css使用選擇器來為頁面元素繫結屬性。一般情況下定位速度要比xpath快,且定位成功率99%

驗證方法:使用**自帶的jquery庫可以定位css選擇器,

$就是jquery的別稱,是jquery庫提供的乙個函式。

1、可以通過$ () 裡的引數進行查詢和選擇html文件中的元素

如:$('#tmp');//這是查詢dom的id等於tmp的元素

方法:在瀏覽器的console裡輸入:$('')例:輸入$('.bg s_btn')便可驗證元素是否被定位到

定位策略:

(1)通過class屬性定位:

find_element_by_css_selector(".bg s_btn")

(2)通過id屬性定位:

find_element_by_css_selector("#kw")

(3)通過任意屬性定位:

find_element_by_css_selector("[autocomplete='off']")

(4)組合定位:

WebDriver API 之操作單選下拉列表

選擇下拉列表首先需要匯入依賴包 select是個類 兩種方法 from selenium.webdriver.support.ui import select from selenium.webdriver.support.select import select第一步 例項化select類物件 s...

WebDriver API 之操作多選的選擇列表

取消所有已選項的方法 select element.deselect all 取消已選項的三種方法 select element.deselect by visible text text select element.deselect by index index select element.d...

常用WebDriver API 的用法 6

1 操作單選框 doctype html html lang en head title 操作單選框 title head body form input type radio name fruit value berry 士多啤梨 input br input type radio name fr...