使用 :text 使用 watir-webdriver 定位 LI 元素

发布于 2024-11-05 19:46:07 字数 2201 浏览 1 评论 0原文

我试图找到并单击 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>

I am trying to locate and click on a jQuery menu element, the menu is defined as multiple UL elements containing a number of LI elements.

Using Firefox 3.6.17 on Mac 10.5, in standard WATIR I've used;

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

or

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

to click on the menu item but using watir-webdriver (0.2.3) it is reporting the LI element cannot be found. Although I can find the containing DIV and an instance of LI by using :class.

I've attached an example of a menu HTML below, can anyone suggest a reliable method of locating the LI item?

<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">   Copy   </li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu-disable">   Add...   </li>
<li class="ws-context-menu-disable">   Remove...   </li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu-disable">   Clear Translation Flag   </li>
<li class="ws-context-menu-disable">   Copy from Master Language...   </li>
<li class="ws-context-menu-disable">   Push to Child Languages...   </li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu">   Options...   </li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu">   Refresh   </li></ul>
<hr class="ws-context-menu-separator">
<ul class="ws-context-menu">
<li class="ws-context-menu">   Help   </li></ul></div>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

他夏了夏天 2024-11-12 19:46:07

这对我有用:

browser.div(:id => "Attributes-menu").li(:text => /Copy/).click

This worked for me:

browser.div(:id => "Attributes-menu").li(:text => /Copy/).click
私藏温柔 2024-11-12 19:46:07

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

browser.li(:text => "\xc2\xa0\xc2\xa0\xc2\xa0Options...\xc2\xa0\xc2\xa0\xc2\xa0")

The reason it's not found is the nbsp;'s. In addition to Željko's regexp solution, you should be able to do this by adding the Unicode bytes for a non-breaking space to the string you're looking for, e.g:

browser.li(:text => "\xc2\xa0\xc2\xa0\xc2\xa0Options...\xc2\xa0\xc2\xa0\xc2\xa0")
迷途知返 2024-11-12 19:46:07

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

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

有关详细信息,请参阅 Ruby Regexp 类的 Rdoc

To do Zeljko's solution but using a string variable you need to create a new instance of the regular expression class from your string variable

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

for more info see the Rdoc for the Ruby Regexp class

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文