selenium的xpath定位

絕對路徑:python

Xpath的絕對路徑使用單斜線 "/"正則表達式

元素是上一節點的子節點中的一個,不能跳級,查找到的元素緊挨着上面一個元素windows

相對路徑:spa

Xpath的相對路徑用 "//"orm

下級任何子節點或者任何嵌套元素子節點中的一個,可跳級,在啊HTML節點下任何位置查找元素 索引

 

1、xpath能夠經過元素的 id name class 這些屬性來定位ip

一、用id屬性定位 utf-8

driver.find_element_by_xpath("//tag_name[@id='kw']").send_keys(u"python語言")   element

# 注意引號的搭配使用,鍵盤輸入中文時,因爲腳本使用的是utf-8,windows使用的是ASCII碼,使用在輸入前加個 「u」input

 

二、用name屬性定位 

driver.find_element_by_xpath("//tag_name[@name='wd']").send_keys(u"python語言")   

 

三、用class屬性定位 

driver.find_element_by_xpath("//tag_name[@class='s_ipt']").send_keys(u"python語言")   

 

2、 xpath層級

一、若是一個元素的屬性不是很明顯,沒法直接定位到,這時候能夠找它老爸(元素)

二、找到它老爸後,再找下一個層級就能定位到了

<form id="form">

<span id ="s_kw_wrap">

<input id="kw">

 

如上代碼,要定位的是 input標籤,經過層級關係定位 input 標籤

driver.find_element_by_xpath("//span[@id='s_kw_wrap']/input").send_keys("python") 

driver.find_element_by_xpath("//form[@id='form']/span/input").send_keys("python") 
 

3、xpath的索引 

若是一個元素他的兄弟元素跟它的標籤同樣,沒法經過層級定位到,能夠經過索引來定位 (索引從1開始算)

<select id="nr" name="NR">

<option selected="" value="10">每頁顯示10條</option>

<option value="20">每頁顯示20條</option>

<option value="50">每頁顯示50條</option>

</selected>

 

driver.find_element_by_xpath("//select[@id='nr']/option[1]")  # 定位 每夜顯示10條的元素

driver.find_element_by_xpath("//select[@id='nr']/option[2]")  # 定位 每夜顯示20條的元素
  driver.find_element_by_xpath("//select[@id='nr']/option[3]")  # 定位 每夜顯示50條的元素

 

 4、xpath的邏輯運算

一、xpath能夠多個屬性邏輯運算,能夠支持and(與)、or(或)、not(非) 

二、通常用的比較多的是 and 運算,同時知足兩個屬性

driver.find_element_by_xpath("//select[@id='nr' and @name='NR']")
 

5、xpath的模糊匹配

一、模糊匹配功能 

driver.find_element_by_xpath("//tag_name[contains(text(),'hao123')]").click()

 

二、模糊匹配某個屬性

driver.find_element_by_xpath("//tag_name[contains(@id,'kw')]").click()

 

三、模糊匹配以什麼開頭

driver.find_element_by_xpath("//tag_name[starts-with(@id,'s_kw_wrap')]").click()
 

四、模糊匹配以什麼結尾

driver.find_element_by_xpath("//tag_name[ends-with(@id,'s_kw_wrap')]").click()

 

五、正則表達式

driver.find_element_by_xpath("//tag_name[matchs(text(),'hao123')]").click()

相關文章
相關標籤/搜索