八大元素定位

1、八種基本元素定位方法css

1.經過id定位:find_element_by_id()
2.經過name定位:find_element_by_name()
3.經過class定位:find_element_by_class_name()
4.經過tag定位:find_element_by_tag_name()
5.經過link定位:find_element_by_link_text()----精準匹配
6.經過partial_link定位:find_element_by_partial_link_text()-----模糊匹配
7.經過xpath定位:find_element_by_xpath()
8.經過css定位:find_element_by_css_selector()html

其中每一種定位方法又有兩種方式,好比經過id來定位:python

find_element_by_id()ui

find_elements_by_id()spa

這二者的區別在於,不加s返回的是第一個匹配到的元素,加上s返回全部匹配到的元素orm

2、XPATH定位htm

在ui自動化中比較靈活又經常使用的是xpath定位,如下是幾種xpath定位的語法格式blog

在說xpath定位以前,格式要先弄清楚圖片

絕對定位:/開頭,嚴格按照元素的樹級路徑(只能是爸爸的兒子)
相對定位://開頭,相對路徑(爸爸的全部後代)ip

xpath定位語法格式:

 

單個屬性://標籤名[@屬性名稱=值]
多個屬性://標籤名[@屬性名稱=值 and/or @屬性名稱=值]
包       含://標籤名[contains(@屬性名稱,「值")],例://a[contains(@href,"abc")]
文       本://標籤名[text()=文本],例://a[text()='做業']
包含和文本同用://a[contains(text(),'做業')]

 

針對xpath的幾種語法格式定位分別進行舉例說明:

(1)、單個屬性

例如在網址欄位輸入www.baidu.com,去定位百度輸入框這個元素,用鼠標 點擊上去發現該元素有class、id、name屬性,很是之豐富,那咱們就能夠根據其中的任何一個進行定位

//*[@id='kw']

//*[@name='wd']

//*[@class='s_ipt']

 

(2)、多個屬性

例如定位百度這張圖片所在元素,它也存在不少個不一樣的屬性,只經過一個屬性沒法定位的時候,咱們能夠根據多個屬性進行組合定位

 

 

(3)、包含

當元素的某個屬性的值很長,或者很差記的時候,咱們可使用包含,例如定位「百度一下」這個按鈕的元素,value值包含百度一詞便可定位到惟一一個

 

 

(4)、文本

//span[text()='換一換']

 

 (5)、包含和文本同用

//span[contains(text(),'換一換')]

 

 

3、XPATH軸定位

軸運算

ancestor:祖先節點,包括父

parent:父節點

preceding:當前元素節點標籤以前的全部節點(html頁面前後順序)

preceding-sibling:當前元素節點標籤以前的全部兄弟節點

following:當前元素節點標籤以後的全部節點(html頁面前後順序)

following-sibling:當前元素節點標籤以後的全部兄弟節點

 軸定位語法:

已知的元素/軸名稱::標籤名稱[@屬性=值]

舉例:

以百度首頁爲例,定位「百度一下」按鈕的元素,用鼠標定位到該按鈕後,發現該元素的父標籤是<span>,span的父標籤是<form>,咱們能夠經過form標籤來一步步找到「百度一下」的標籤

如下提供兩種xpath路徑:

//form[@id='form']//following-sibling::span[@class='bg s_btn_wr']/input----------先經過id找form標籤,再經過class找其兄弟節點,再找下面的input標籤

//form[@id='form']//following::input[@id='su']---------------------先經過id找form標籤,再找該節點後的全部節點中找出id爲su的input標籤

因此元素定位是很是靈活的,能夠有多種方式,平時通常較難定位的纔會用到軸定位,實際上改元素經過id就能惟必定位了

 

 4、CSS定位語法

driver.find_element_by_css_selector("#kw").send_keys("python")------id屬性driver.find_element_by_css_selector(".s_ipt").send_keys("python")------class屬性driver.find_element_by_css_selector("[name='wd']").send_keys("python")-----name屬性driver.find_element_by_css_selector("input#kw").send_keys("python")----標籤與id屬性的組合driver.find_element_by_css_selector("input.s_ipt").send_keys("python")------標籤與class屬性的組合driver.find_element_by_css_selector("form#form>span>input").send_keys("python")-----經過層級關係定位

相關文章
相關標籤/搜索