在JS隐藏下拉菜单中选择链接

时间:2016-01-22 17:40:49

标签: ruby watir watir-webdriver

我有一个JavaScript隐藏的下拉菜单,除非鼠标悬停在链接上,否则不显示链接。我正在尝试使用ruby watir-webdriver在此菜单中选择一个链接。我可以使用.hover选择链接,该链接显示下拉菜单中的内容。但是我无法选择菜单中的任何链接。在这种情况下,我想点击链接“item1”。 这是html代码:

    <script type="text/javascript">
    <div id="menuWHeader" class="menuWf">
    <span class="menuTitle" onclick="goWindow(oprWin)"  onmouseout="menuCollapse('menuWContent')" onmouseover="menuExpand('menuWContent')"> window </span>
    <table id="menuWContent" class="menuContent" onmouseout="menuCollapse("menuWContent")" onmouseover="menuExpand("menuWContent")" style="visibility: hidden;">
    <tbody>
    <tr>
    <td class="menuItemNormal" onclick="goWindow(oprWin)" onmouseout="menuNormal(this)" onmouseover="menuSelect(this)">
    <img id="imgMenuWindow1" alt="" src="https://<myurl>/images/check-none.gif">
    item1
    </td> 
    </tr>
    <tr style="display:none">
    <td onclick="goWindow(crtWin)" onmouseout="menuNormal(this)" onmouseover="menuSelect(this)">
     <img id="imgMenuWindow2" alt="" src="https://<myurl>/images/check-none.gif">
    item2
    </td>
    </tr>
    <tr>
    <td class="menuItemNormal" onclick="goWindow(libWin)" onmouseout="menuNormal(this)" onmouseover="menuSelect(this)">
    <img id="imgMenuWindow3" alt="" src="https://vts42.commstor.crossroads.com/images/check-none.gif">
    item3
    </td>
    </tr>

第二个表行项目“item2”被隐藏,并且不显示在菜单上(在代码中显示为灰色)。所以只有item1&amp;当我将鼠标悬停在菜单上时,菜单3会显示。

如上所述,我可以将鼠标悬停在“窗口”上,这是此菜单的标题,然后显示菜单项。我只是无法选择列表中的任何项目。现在我只是想选择item1。下面是悬停在菜单上的watir代码。

 wb.div(:id => 'menuWHeader').span(:class =>'menuTitle').hover

我已经尝试了一些没有用的东西,所以我没有看到发布失败尝试的任何意义。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您似乎想要点击td元素。这基于具有这些元素的onclick属性的HTML。

看起来关于元素的唯一唯一属性是文本。根据您在页面上有多少个表,您可以这样做:

wb.td(text: 'item1').when_present.click

如果还有其他表格,您可能希望将搜索范围仅限于标题div

wb.div(:id => 'menuWHeader').td(text: 'item1').when_present.click

请注意,我们提供了when_present方法,以确保在尝试点击td之前Watir等待菜单显示。