Watir的element定位,是可以使用xpath來進(jìn)行定位的,它的實(shí)現(xiàn)過程如下:
通過DOM組件來獲得HTML文件的源文件
清除HTML源文件的格式,然后轉(zhuǎn)化為一個(gè)正確的XHTML文件
將XHTML作為一個(gè)輸入傳遞給REXML
使用REXML來解析XPath的表達(dá)式,從而獲得指定元素的路徑
將路徑通過COM方式返回給DOM,從而獲得定位
我們一般使用的XPath的路徑表達(dá)式有:
// 從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮它們的位置。
. 選取當(dāng)前節(jié)點(diǎn)。
.. 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)。
@ 選取屬性。
實(shí)例:
1. 指定查找
我們有一個(gè)a元素為:<a href="test.htm">click me</a>
browser.link(:xpath,"//a[@href='test.htm']").text
# => "click me“
如果這個(gè)a是第一個(gè),我們可以用
browser.link(:xpath, “//a”).html #//a 返回第一個(gè)
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é)點(diǎn)進(jìn)行搜索:
browser.element(:xpath, "//a/..").tag_name
#=> "div"
5. 完全模糊查找
當(dāng)我們只知道id,不知道type信息的情況下
browser.element(:xpath, "//×[@id='u']").tag_name