selenium+python自動化元素定位


最近學習自動化測試,終於初步學習完成,需要進行博客日志總結,加深鞏固自己的知識。

元素的八種定位方式

1.id

以百度為例子

我們在python輸入的元素定位語法:bs.find_element_by_id('kw').send_keys('selenium  (必須包含id屬性)

 

2.name

以百度為例

 

 元素定位語法:(必須包含name屬性的)

 

3.class_name

百度為例

元素定位語法:(必須包含class屬性)

4.tag_name

 

元素定位語法:(必須是具有唯一標簽才能定位)

 

5.link_text

元素定位語法:(用於定位帶有超鏈接包含文字的元素)

 

6.partial_link_text

語法同link_text相同,區別在於partial_link_text可以進行模糊定位

這里為什么不輸入“新”字呢?,因為定位不是唯一的

7.xpath

這是需要重點學習的地方,因為xpath功能強大,基本能定位所有的元素,如果不行那就多重邏輯加上多關系路徑結合,少有失手。

xpath提供兩種定位方式

 一.絕對路徑  :   bs.find_element_by_xpath("/html/body/form/span/input"

 絕對路徑因正常情況下使用起來比較繁瑣,所以一般使用下面的相對路徑

二.相對路徑   : bs.find_element_by_xpath("//form/span/input")     相對路徑單一使用只能定位多個相似的元素,必須結合屬性或者層級以及邏輯關系才能定位唯一的元素。

1.相對路徑加屬性: bs.find_element_by_xpath("//*[@id='kw']")  、bs.find_element_by_xpath("//*[@name='wd']")  、bs.find_element_by_xpath("//input[@class='s_ipt']")

2.相對路徑加屬性加層級關系 : 1)父子關系定位: bs.find_element_by_xpath("//span[@class='soutu-btn']/input")   、2)兄弟關系定位 :bs.find_element_by_xpath("//form[@id='form']/../span/input")

 

3.相對路徑加屬性加邏輯關系 : bs.find_element_by_xpath("//input[@id='kw' and @name='wd']")(並不局限與id、name、class等,其他屬性也能利用,並且可以邏輯關系嵌套父子關系或者兄弟關系的邏輯關系)bs.find_element_by_xpath("//input[@id='wd' and @target='_black']/../[@id='wd' and @target='_sipt']/div")

8.css

同上面的xpath一樣也是重點和使用最多的方法,因其定位元素速度比xpath快,方法多,所有元素皆可定位,並且上面的定位工具也支持css定位和檢查,所以建議大家盡量使用css。

css定位語法:

1.id  :  bs.find_element_by_css_selector("#kw")

2.class   :  bs.find_element_by_css_selector(".s_ipt") 

3.屬性(必須唯一屬性)  :   bs.find_element_by_css_selector("[name=wd]") 、  bs.find_element_by_css_selector("[type=submit]")

4. 層級   : bs.find_element_by_css_selector("html > body > form > span > input") 

5. 屬性加層級  : bs.find_element_by_css_selector("span.soutu-btn> input#kw")  、bs.find_element_by_css_selector("form#form > span > input")

注意:firebug和firepath在新的火狐瀏覽器已經被拋棄了,具體原因不是很清楚,但其功能強大,定位精准,可惜只能安裝低版本的火狐瀏覽器使用。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM