2016-01-22 82 views
0

我有一個JavaScript隱藏的下拉菜單,除非鼠標懸停在它上面,否則不會顯示鏈接。我正嘗試使用ruby watir-webdriver在此菜單中選擇一個鏈接。我可以使用.hover選擇鏈接,顯示下拉菜單中的內容。但是我無法選擇菜單中的任何鏈接。在這種情況下,我想點擊鏈接「item1」。 下面是HTML代碼:在JS隱藏下拉菜單中選擇鏈接

<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 & item3在我將鼠標懸停在菜單上時可以看到。

如前所述,我可以懸停在「窗口」這是該菜單的標題,然後顯示菜單項。我無法選擇列表中的任何項目。現在我只想選擇item1。下面是要在菜單上懸停的watir代碼。

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

我試過一堆沒有工作的東西,所以我沒有看到發佈我失敗的嘗試的任何一點。任何幫助表示讚賞。

回答

0

它看起來像你想單擊td元素。這是基於具有這些元素的onclick屬性的HTML。

它看起來像關於元素唯一的獨特屬性是有文本。根據你有多少表頁面上,你可以這樣做:

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

如果有其他的表,你可能想要範圍的搜索,只是頭div

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

注意,包含when_present方法以確保Watir在嘗試點擊td之前等待菜單出現。

+0

工作完美謝謝! –