2012-05-18 76 views
2

我试着用watir-webdriver来实现测试自动化。顺便说一下,我是一个有watir-webdriver,ruby和co的新生。如何通过非标准的html属性访问元素?

我们所有的HTML实体都有一个唯一的名为“wicketpath”的HTML属性。可以使用“name”,“id”a.s.o访问元素,但不能使用属性“wicketpath”。所以我用XPATH尝试过,但我没有成功。

任何人都可以帮助我与一个codesnippet如何通过属性“wicketpath”访问元素?

在此先感谢。

R.

回答

2

您应该可以使用xpath。

例如,请考虑以下HTML

<ul class="ui-autocomplete" role="listbox"> 
    <li class="ui-menu-item" role="menuitem" wicketpath="false">Value 1</li> 
    <li class="ui-menu-item" role="menuitem" wicketpath="false">Value 2</li> 
    <li class="ui-menu-item" role="menuitem" wicketpath="true">Value 3</li> 
</ul> 

以下XPath会给有wicketpath =真里的文字:

puts browser.li(:xpath, "//li[@wicketpath='true']").text 
#=>Value 3 

更新 - 可选择的解决方案 - 添加到定位器:

如果您使用很多wicketpath,可以将它添加到定位器中。

后,你需要的Watir-webdriver的,补充一点:

# This allows using :wicketpath in locators 
Watir::HTMLElement.attributes << :wicketpath 

# This allows accessing the wicketpath attribute 
class Watir::Element 
    attribute(String, :wicketpath, 'wicketpath') 
end 

这将让你使用 'wicketpath' 作为定位:

p browser.li(:wicketpath, 'true').text 
#=> "Value 3" 

p browser.li(:text, 'Value 3').wicketpath 
#=> true 
+0

好东西贾斯汀.. –

0

试试这个

提出browser.li (:css,“.ui-autocomplete> .ui-menu-item [wicketpath ='true']”)。文字

请让我知道是上面的脚本正在工作与否。

相关问题