我正在尝试使用 watir-webdriver 实现测试自动化。顺便说一句,我是 watir-webdriver、ruby 和 co 的大一新生。
我们所有的 HTML 实体都有一个独特的 HTML 属性,名为“wicketpath”。也可以使用“name”、“id”访问元素,但不能使用属性“wicketpath”。所以我用 XPATH 进行了尝试,但没有成功。
任何人都可以通过代码片段帮助我如何通过属性“wicketpath”访问元素吗?
提前致谢。
R。
我正在尝试使用 watir-webdriver 实现测试自动化。顺便说一句,我是 watir-webdriver、ruby 和 co 的大一新生。
我们所有的 HTML 实体都有一个独特的 HTML 属性,名为“wicketpath”。也可以使用“name”、“id”访问元素,但不能使用属性“wicketpath”。所以我用 XPATH 进行了尝试,但没有成功。
任何人都可以通过代码片段帮助我如何通过属性“wicketpath”访问元素吗?
提前致谢。
R。
您应该能够使用 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
尝试这个
puts browser.li(:css, ".ui-autocomplete > .ui-menu-item[wicketpath='true']").text
请让我知道上述脚本是否有效。