2014-05-02 105 views
0

如何執行由此按鈕觸發的JavaScript子菜單,「x-auto-54」Python Selenium在javascript菜單中訪問隱藏鏈接

<table id="x-auto-54" 
     class=" x-btn avtar-x-btn x-component x-btn-noicon x-unselectable " 
     cellspacing="0" role="presentation" unselectable="on"> 

的最終目標,然後點擊此子菜單鏈接,\\一個[@ ID = 「X-AUTO-89」]:

<div id="x-auto-55" class=" x-ignore x-menu x-component " style="z-index: 1053; width: 118px; display: block; position: absolute; left: 1095px; top: 18px;" tabindex="0" hidefocus="true" aria-labelledby="x-auto-54"> 
      <div class=" x-menu-list" style="height: 96px;"> 
       <div id="x-menu-el-x-auto-89" class="x-menu-list-item "> 
        <a id="x-auto-89" class=" x-menu-item x-component" href="#"></a> 
       </div> 
       <div id="x-menu-el-x-auto-90" class="x-menu-list-item "></div> 
       <div id="x-menu-el-x-auto-91" class="x-menu-list-item "></div> 
       <div id="x-menu-el-x-auto-92" class="x-menu-list-item "></div> 
      </div> 
     </div> 
    </body> 

</html 

我發現這些按鈕使用Selenium IDE(在錄製時點擊它們後)。整個來源非常大(如有必要,我會根據要求發佈)。

我的策略是每次訪問一個分層標籤,以便找到無法找到Web元素的位置(在這種情況下,子菜單未打開,因此x-auto-89 isn) t上找不到):

a54 = driver.find_element_by_id('x-auto-54') 
hover = ActionChains(driver).move_to_element(a54).click() 
hover.perform() 
driver.find_element_by_id('x-auto-89').click() 

點擊代碼根據這些解決方案被引用:12

回答

1

第一件事,這些ID看起來是自動生成的。這些ID(x-auto-54或x-auto-89)是否一直都是一樣的,或者頁面的每次刷新都在改變它們?

我會建議使用類來代替ID。

當您運行代碼時,您是否看到按鈕x-auto-54上出現點擊並出現子菜單?

顯示子菜單需要多長時間?嘗試使用waitForElement而不是find元素。

+0

你是對的,而x-auto-54保持不變,x-auto-89肯定會改變。另外,不,子菜單不會出現。我想這就是爲什麼我無法點擊第二個按鈕,我沒有觸發JavaScript? – ecoe

相關問題