selenium自動化測試(二) 元素定位

2021-10-05 07:47:55 字數 3505 閱讀 4885

自動化測試其實就是模擬滑鼠和鍵盤來操作這些元素,包括單擊、輸入、滑鼠懸停等。操作元素的前提就是找到元素,接下來就介紹怎樣去定位元素。

webdriver提供了八種元素定位方法:

from selenium import webdriver

driver = webdriver.chrome(

)driver.get(

"")driver.find_element_by_name(

"wd"

).send_keys(

"selenium"

)driver.find_element_by_id(

"su"

).click(

)driver.quit(

)

html的本質其實就是通過tag來定義實現不同的功能,比如、、等tag,所以很難通過標籤tag name去定位元素find_element_by_tag_name('input')

find_element_by_link_text(

'新聞'

)find_element_by_link_text(

'hao123'

)find_element_by_link_text(

'地圖'

)find_element_by_link_text(

)find_element_by_link_text(

'貼吧'

)

find_element_by_link_text()方法通過元素標籤對之間的文字資訊來定位元素

partial link定位是對link定位的一種補充,當文字鏈結太長後,我們可以取文字鏈結的一部分定位,只要這一部分資訊可以唯一標識這個鏈結。

1、絕對路徑定位

find_element_by_xpath("/html/body/div[x]/form/input")

x 代表第x個 div標籤,注意,索引從1開始而不是0 此方法缺點顯而易見,當頁面元素位置發生改變時,都需要修改,因此,不推薦使用

from selenium import webdriver

driver = webdriver.chrome(

)driver.get(

"")driver.find_element_by_xpath(

"//input[@id='kw']"

).send_keys(

"selenium"

)driver.find_element_by_xpath(

"//input[@id='su']"

).click(

)driver.quit(

)

4、使用邏輯運算子

xpath還有乙個比較強的功能,是可以多個屬性邏輯運算的,可以支援與(and)、或(or)、非(not)

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

一般情況下,css的定位速度會比xpath快,css選擇器的常見語法:

選擇器例子

描述.class

.intro

class選擇器,選擇class="intro"的所有元素

#id#firstname

id選擇器,選擇id="firstname"的所有元素**

選擇所有元素

element

p元素所有標籤

element>element

div>input

選擇父元素為的所有元素

element+element

div+input

選擇同一級中緊接在元素之後的所有元素

[attribute=value]

[target=_blank]

選擇target="_blank"的所有元素

1、通過class屬性定位,(.)表示通過class屬性來定位元素

find_element_by_css_selector(".s_ipt")

2、通過id屬性定位,(#)表示通過id屬性來定位元素

find_element_by_css_selector("#kw")

3、通過標籤定位

find_element_by_css_selector("input")

由於標籤名重複的概率非常大,所以不建議通過這種方式進行定位元素

4、通過父子關係定位

find_element_by_css_selector("span>input")

查詢標籤名span的所有標籤名叫input的子元素

5、通過屬性定位

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

find_element_by_css_selector("[name='wd']")

6、組合定位

find_element_by_css_selector("form.fm>span>input#kw")

標籤名為form,class屬性為fm,下一級標籤名span,下一級標籤名input且id屬性值kw

前面介紹的8中定位方法,webdriver還提供了另外一套寫法,統一呼叫find_element()方法,通過by來宣告定位的方法

from selenium import webdriver

from selenium.webdriver.common.by import by

driver = webdriver.chrome(

)driver.get(

'')driver.find_element(by.id,

'kw'

)driver.find_element(by.name,

'wd'

)driver.find_element(by.class_name,

's_ipt'

)driver.find_element(by.tag_name,

'input'

)driver.find_element(by.link_text,

'新聞'

)driver.find_element(by.partial_link_text,

'新')

driver.find_element(by.xpath,

'//*[@id="kw"]'

)driver.find_element(by.css_selector,

'span.bg s_ipt_wr quickdelete-wrap>input#kw'

)

selenium 自動化測試。

第一步安裝 谷歌瀏覽器。第三步編寫測試測試指令碼 第四步 安裝selemium coding utf 8 引入webdriver和unittest所需要的包 from selenium import webdriver from selenium.webdriver.common.by import...

Python自動化測試 Selenium

第乙個selenium就。先show from selenium import webdriver driver webdriver.firefox driver.get assert oxcoder decode utf 8 in driver.title print driver.title d...

自動化測試selenium(四)

三 用例的執行順序 四 unittest斷言 unittest 各元件的關係為 test fixture 初始化和清理測試環境,比如建立臨時的資料庫,檔案和目錄等,其中 setup 和 setdown 是最常用的方法 test case 單元測試用例,testcase 是編寫單元測試用例最常用的類 ...