最近學習自動化測試,終於初步學習完成,需要進行博客日志總結,加深鞏固自己的知識。
元素的八種定位方式
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在新的火狐瀏覽器已經被拋棄了,具體原因不是很清楚,但其功能強大,定位精准,可惜只能安裝低版本的火狐瀏覽器使用。