Watir的element定位,是可以使用xpath來進行定位的,它的實現(xiàn)過程如下:
通過DOM組件來獲得HTML文件的源文件
清除HTML源文件的格式,然后轉(zhuǎn)化為一個正確的XHTML文件
將XHTML作為一個輸入傳遞給REXML
使用REXML來解析XPath的表達式,從而獲得指定元素的路徑
將路徑通過COM方式返回給DOM,從而獲得定位
我們一般使用的XPath的路徑表達式有:
// 從匹配選擇的當(dāng)前節(jié)點選擇文檔中的節(jié)點,而不考慮它們的位置。
. 選取當(dāng)前節(jié)點。
.. 選取當(dāng)前節(jié)點的父節(jié)點。
@ 選取屬性。
實例:
1. 指定查找
我們有一個a元素為:<a href="test.htm">click me</a>
browser.link(:xpath,"//a[@href='test.htm']").text
# => "click me“
如果這個a是第一個,我們可以用
browser.link(:xpath, “//a”).html #//a 返回第一個
browser.link(:xpath, //a[1]).html #//a[1] 數(shù)組是以1開始,非0
2. 完全定位查找
百度的頁面上有:
<input type="submit" value="百度一下" id="su" class="s_btn" nmousedown="this.className='s_btn s_btn_h'" nmouseout="this.className='s_btn'">
browser.button(:xpath,"//input[@id=‘su’]").type
# => “submit"
3. 也可以模糊查找
browser.button(:xpath,"//input[contains(@id, ‘su’)]").type
# => “submit"
4. 相對路徑
例如有:
<div id="u">
<a href="http://www.baidu.com/gaoji/preferences.html" name="tj_setting">搜索設(shè)置</a>
</div>
我們可以對a的父節(jié)點進行搜索:
browser.element(:xpath, "//a/..").tag_name
#=> "div"
5. 完全模糊查找
當(dāng)我們只知道id,不知道type信息的情況下
browser.element(:xpath, "//×[@id='u']").tag_name