9

我试图找到并单击一个 jQuery 菜单元素,该菜单被定义为包含多个 LI 元素的多个 UL 元素。

在我使用过的标准 WATIR 中,在 Mac 10.5 上使用 Firefox 3.6.17;

browser.li(:text,"Options...").click

或者

browser.div(:id,"Attributes-menu").li(:text,"Copy").click

单击菜单项但使用 watir-webdriver (0.2.3) 报告找不到 LI 元素。虽然我可以使用 :class 找到包含 DIV 和 LI 的实例。

我在下面附上了一个菜单 HTML 的示例,任何人都可以建议一种可靠的方法来定位 LI 项目吗?

<div class="ws-menu-container ws-context-menu ws-context-menu-hidden" style="top: 16px; left: 214px; " id="Attributes-menu">
<ul class="ws-context-menu"><li class="ws-context-menu-disable">&nbsp;&nbsp;&nbsp;Copy&nbsp;&nbsp;&nbsp;</li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu-disable">&nbsp;&nbsp;&nbsp;Add...&nbsp;&nbsp;&nbsp;</li>
<li class="ws-context-menu-disable">&nbsp;&nbsp;&nbsp;Remove...&nbsp;&nbsp;&nbsp;</li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu-disable">&nbsp;&nbsp;&nbsp;Clear Translation Flag&nbsp;&nbsp;&nbsp;</li>
<li class="ws-context-menu-disable">&nbsp;&nbsp;&nbsp;Copy from Master Language...&nbsp;&nbsp;&nbsp;</li>
<li class="ws-context-menu-disable">&nbsp;&nbsp;&nbsp;Push to Child Languages...&nbsp;&nbsp;&nbsp;</li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu">&nbsp;&nbsp;&nbsp;Options...&nbsp;&nbsp;&nbsp;</li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu">&nbsp;&nbsp;&nbsp;Refresh&nbsp;&nbsp;&nbsp;</li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu">&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</li></ul></div>
4

3 回答 3

20

这对我有用:

browser.div(:id => "Attributes-menu").li(:text => /Copy/).click
于 2011-05-10T11:36:59.787 回答
3

没有找到的原因是 nbsp;'s。除了 Željko 的正则表达式解决方案之外,您应该能够通过将不间断空格的 Unicode 字节添加到您要查找的字符串中来做到这一点,例如:

browser.li(:text => "\xc2\xa0\xc2\xa0\xc2\xa0Options...\xc2\xa0\xc2\xa0\xc2\xa0")
于 2011-05-10T18:49:43.340 回答
1

要执行 Zeljko 的解决方案但使用字符串变量,您需要从字符串变量创建正则表达式类的新实例

searchtext = Regexp.new(mystringvariable)
browser.div(:id => "Attributes-menu").li(:text => searchtext).click

有关更多信息,请参阅Ruby Regexp 类的 Rdoc

于 2011-05-11T18:51:36.717 回答