目錄
XPATH 元素定位
xpath通過(guò)絕對(duì)路徑定位元素
xpath通過(guò)相對(duì)路徑定位元素
xpath通過(guò)元素屬性定位元素
xpath通過(guò)屬性值模糊匹配定位元素
xpath通過(guò)文本定位元素
xpath常見(jiàn)語(yǔ)法一覽表
XPATH 元素定位
XPath 是用于在 XML 文檔中定位節(jié)點(diǎn)的語(yǔ)言。由于 HTML 可以是 XML (XHTML) 的實(shí)現(xiàn),Selenium 用戶可以利用這種強(qiáng)大的語(yǔ)言來(lái)定位其 Web 應(yīng)用程序中的元素。XPath 擴(kuò)展(并支持)通過(guò) id 或 name 屬性定位的簡(jiǎn)單方法,并開(kāi)辟了各種新的可能性,例如定位頁(yè)面上的第三個(gè)復(fù)選框。?
使用 XPath 的主要原因之一是當(dāng)您沒(méi)有合適的 id 或 name 屬性用于您希望定位的元素時(shí)。您可以使用 XPath 以絕對(duì)術(shù)語(yǔ)(不建議)或相對(duì)于具有 id 或 name 屬性的元素來(lái)定位元素。XPath 定位器還可用于通過(guò) id 和 name 以外的屬性指定元素。
絕對(duì) XPath 包含來(lái)自根 (html) 的所有元素的位置,因此可能會(huì)失敗,只需對(duì)應(yīng)用程序進(jìn)行最輕微的調(diào)整。通過(guò)查找具有 id 或 name 屬性的附近元素(理想情況下是父元素),您可以根據(jù)關(guān)系定位目標(biāo)元素。這不太可能改變,并且可以使您的測(cè)試更加健壯。
由于只有定位器以“//”開(kāi)頭,因此在指定 XPath 定位器時(shí)xpath不需要包含標(biāo)簽。
xpath通過(guò)絕對(duì)路徑定位元素
將xpath表達(dá)式從html的最外從節(jié)點(diǎn),逐層填寫(xiě),最后定位到操作元素。
注意:如果 HTML 稍微改變就會(huì)中斷,不建議使用
1 driver.find_element_by_xpath('/html/body/div[2]/div[1]/a')
2 driver.find_element(By.XPATH, '/html/body/div[2]/div[1]/a')
xpath通過(guò)相對(duì)路徑定位元素
絕對(duì)路徑與相對(duì)路徑的差別與文件系統(tǒng)中的絕對(duì)和相對(duì)路徑類似,相對(duì)路徑是只給出元素路徑的部分信息,在html的任意層次中尋找符合條件 的元素,語(yǔ)句以//開(kāi)始
1 driver.find_element_by_xpath('//form/span')
2 driver.find_element(By.XPATH, '//form/span')
xpath通過(guò)元素屬性定位元素
單屬性定位://input[@name='pwd']
1 driver.find_element_by_xpath("http://input[@name='pwd']")
2 driver.find_element(By.XPATH, "http://input[@name='pwd']")
多屬性定位:?//a[@title="tutorial" and @rel="follow"]
1 driver.find_element_by_xpath('//a[@title="tutorial" and @rel="follow"]')
2 driver.find_element(By.XPATH, '//a[@title="tutorial" and @rel="follow"]')
xpath通過(guò)屬性值模糊匹配定位元素
xpath模糊匹配的函數(shù)有兩種: starts-with和contains
starts-with://label[starts‐with(@class,'btn')]
1 driver.find_element_by_xpath("http://label[starts‐with(@class,'btn')]")
2 driver.find_element(By.XPATH, "http://label[starts‐with(@class,'btn')]")
?contains://label[contains(@class,'btn')]
1 driver.find_element_by_xpath("http://label[contains(@class,'btn')]")
2 driver.find_element(By.XPATH, "http://label[contains(@class,'btn')]")
xpath通過(guò)文本定位元素
文本內(nèi)容的定位是利用html的text字段進(jìn)行定位的方法,//span[text()='下一步'],由于“下一步”這幾個(gè)字是瀏覽器界面就可以看到的,“所見(jiàn)即所得”,這種特征的可能性非常小,優(yōu)先推薦使用,與屬性值類似,文本內(nèi)容也支持starts-with和contains模糊匹配。
1 driver.find_element_by_xpath("http://span[text()='下一步']")
2 driver.find_element(By.XPATH, "http://span[text()='下一步']")
3 driver.find_element(By.XPATH, "http://span[starts‐with(text(),'下一步')]")
4 driver.find_element(By.XPATH, "http://span[contains(text(),'下一步')]")
xpath常見(jiàn)語(yǔ)法一覽表
表達(dá)式 | 說(shuō)明 | 舉例 |
/ | 從根節(jié)點(diǎn)開(kāi)始選取 | /html/div/span |
// | 從任意節(jié)點(diǎn)開(kāi)始選取 | //input |
. | 選取當(dāng)前節(jié)點(diǎn) | |
.. | 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn) | //input/.. 會(huì)選取input的父節(jié)點(diǎn) |
@ | 選取屬性,或者根據(jù)屬性選取 | //input[@data] 選取具備 data屬性的input元素文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-771165.html //@data 選取所有 data屬性文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-771165.html |
* | 通配符,表示任意節(jié)點(diǎn)或任意屬性 |
到了這里,關(guān)于Selenium元素定位之xpath的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!