我如何通过非标准的html属性访问元素?

时间:2012-05-18 16:00:12

标签: watir watir-webdriver

我尝试使用watir-webdriver实现测试自动化。顺便说一句,我是watir-webdriver,ruby和co。

的新生

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

有人可以通过属性“wicketpath”帮助我使用codesnippet如何访问元素吗?

提前致谢。

R上。

2 个答案:

答案 0 :(得分: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 = true的li的文本:

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

答案 1 :(得分:0)

试试这个

将browser.li(:css,&#34; .ui-autocomplete&gt; .ui-menu-item [wicketpath =&#39; true&#39;]&#34;)。text。

请告诉我上述脚本是否有效。