如何使用watir和firefox访问未识别的嵌套菜单元素?

时间:2012-01-09 22:27:55

标签: javascript watir watir-webdriver

我的列表嵌套在两个标题下,我不知道如何通过watir访问它们,因为样式,显示设置为“无”,直到发生“悬停”事件。并且直到悬停/悬停时才定义该类。

b.link(:text, /Assessments/).fire_event('onmouseover')

将打开初始下拉列表。我不知道如何访问“子级”

中的元素

以下内容的变更由watir拒绝:

b.link(:class, "sub-level").click
b.link(:class, "sub-level").fire_event('onmouseover')
b.link(:class, "sub-level").fire_event('hover')

Watir::Exception::UnknownObjectException: unable to locate element, using {:class=>"sub-level", :tag_name=>"a"}

我一直在通过IRB运行它,以便快速测试我添加到脚本中的每个新行。如果这不正确,我将不胜感激。

<li class="top-level">
<a class="" href="#">
Assessments&nbsp;&nbsp;
<img id="lfArrowImg" style="border:0px;" src="https://test.com/top/images/global_nav_downArrow.gif">
</a>
  <ul style="z-index: 1045; display: none;">
  <li class="sub-level">
     <a class="">
     Assessments
     <div id="menugroup" class="dr-menu-node dr-menu-node-icon rich-menu-item-folder rich-menu-group-folder"></div>
     </a>
  <ul style="z-index: 1068; display: none;">    
  <li class="sub-level">
     <a class="" href="http://test.com/content/aa/assessment/index.xhtml">Main</a>
  </li>
  <li class="sub-level">
  <li class="sub-level">
</ul>
</li>

谢谢, 达明

1 个答案:

答案 0 :(得分:2)

错误是正确的,因为该代码中没有带有子类级别的链接标记。该类的东西是包含链接元素的li(List Item)元素(也就是'anchor',因此是a标签)

尝试这样的事情(取决于您要点击的链接)

browser.li(:class => 'sub-level', :text => 'Assessments').link.click
browser.li(:class => 'sub-level', :text => 'Main').link.click

有关识别元素的方法的更多信息,特别是如果它们没有方便的ID,Class等,请参阅此SO问题的答案:How to get index of parent element using Watir Webdriver?以及此问题的答案(全部三个):{ {3}}