selenium2 XPath定位

2021-07-02 17:05 更新

?XPath?是用來定位?XML?文檔節(jié)點(diǎn)的語言。不過HTML可以看成是XML(XHTML)的一種實(shí)現(xiàn)。Selenium用戶可以使用這個(gè)強(qiáng)力的語言來定位Web應(yīng)用的元素。 ?XPath?拓展了用?id?或者?name?屬性來定位的單一方法,開創(chuàng)了許多可能性,例如定位頁面的第三個(gè)復(fù)選框。

用?XPath?的主要理由之一,就是你想定位的元素沒有合適的?id?或者?name?屬性的時(shí)候,你可以用?XPath?來對元素進(jìn)行絕對定位(不推薦)或者把這個(gè)元素和另外一個(gè)有確定?id?或者?name?的元素關(guān)聯(lián)起來(即相對定位)。?XPath?定位器也可以用來找出那些具有?id?,?name?以外屬性的元素。

絕對的?XPath?定位包含了從HTML根節(jié)點(diǎn)起的所有元素,并且一些輕微的改變就會(huì)失效。而用?id?或者?name?屬性來找到一個(gè)靠近的元素(比較理想的是父元素),這樣你就可以依靠他們的相對關(guān)系來確定目標(biāo)元素的位置。這種情況改變的可能就小了很多了,我們寫的測試程序也會(huì)更可靠。

再來看一個(gè)實(shí)例:

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
   <input name="continue" type="button" value="Clear" />
  </form>
</body>
<html>

?form?元素可以這樣定位:

login_form = driver.find_element_by_xpath("/html/body/form[1]")
login_form = driver.find_element_by_xpath("http://form[1]")
login_form = driver.find_element_by_xpath("http://form[@id='loginForm']")

(譯者注:這里下標(biāo)是從1開始的)

  1. 絕對路徑(如果HTML有細(xì)微的改變就會(huì)失效)
  2. HTML的第一個(gè)?form?元素
  3. ?id?屬性為?'loginForm'?的?form?元素

?username?元素可以這樣定位:

username = driver.find_element_by_xpath("http://from[input/@name='username']")
username = driver.find_element_by_xpath("http://form[@id='loginForm']/input[1]")
username = driver.find_element_by_xpath("http://input[@name='username']")
  1. 第一個(gè)?form?元素的 ?name?屬性是?'username'?的?input?子元素
  2. ?id?屬性為?'loginForm'?的?form?元素的第一個(gè)?input?子元素
  3. ?name?屬性為?'username'?的第一個(gè)?input?元素

?'clear'?按鈕可以這樣定位:

clear_button = driver.find_element_by_xpath("http://input[@name='continue'][@type='button']")
clear_button = driver.find_element_by_xpath("http://form[@id='loginForm']/input[4]")
  1. ?type?屬性為?'button'?,?name?屬性為?'continue'?的第一個(gè)?input?元素
  2. ?id?為?'loginForm'?的表單的第四個(gè)?input?子元素

這些例子只覆蓋了一些基本的使用情況,如果想學(xué)習(xí)更具體的,推薦下面這些地方: 

Xpath教程  Firebug教程

另外,善用開發(fā)者工具也可以幫助我們測試,Chrome和Firefox瀏覽器的F12開發(fā)者工具都有很好的調(diào)試支持,可以直接查看元素的Xpath等定位器。

 注:Firebug現(xiàn)在已經(jīng)內(nèi)置集成在Firefox DevTools中


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)