2

我正在尝试使用 watir-webdriver 实现测试自动化。顺便说一句,我是 watir-webdriver、ruby 和 co 的大一新生。

我们所有的 HTML 实体都有一个独特的 HTML 属性,名为“wicketpath”。也可以使用“name”、“id”访问元素,但不能使用属性“wicketpath”。所以我用 XPATH 进行了尝试,但没有成功。

任何人都可以通过代码片段帮助我如何通过属性“wicketpath”访问元素吗?

提前致谢。

R。

4

2 回答 2

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
于 2012-05-18T16:38:03.607 回答
0

尝试这个

puts browser.li(:css, ".ui-autocomplete > .ui-menu-item[wicketpath='true']").text

请让我知道上述脚本是否有效。

于 2014-04-08T10:27:34.843 回答