我有一个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
我已经尝试了一些没有用的东西,所以我没有看到发布失败尝试的任何意义。任何帮助表示赞赏。
答案 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等待菜单显示。