2017-08-16 97 views
0

我在量角器,打字稿,JavaScript的新..所以,我不知道到底我做錯了什麼。如何從量角器的隨機菜單中獲取元素?

的webelement只返回一個對象,我不能執行的操作點擊的鏈接。 如何獲取linkText?我嘗試使用其他形式,如id,css,tagname,但出於某種原因,對象在某個時候會丟失。有人有這種問題?

//html (which is inside a frame) 

<div class="menuLabel" id="menuLabel1"> </div> 
<div class="submenubox" id="submenu1"> </div> 


<div class="menuLabel" id="menuLabel2"> 
    <table> 
    <tbody> 
     <tr> 
     <td> </td> 
     <td class="menuText"> 
      <nobr> 
      <a onmouseover="menuShow(event,'2')" href="javascript:void(null)" class="ml">Example Main Menu</a> 
      </nobr> 
     </td> 
     </tr> 
    </tbody> 
    </table> 
</div> 

<div class="submenubox" id="submenu2"> 
    <table border="0" cellpadding="0" cellspacing="0"> 
    <tbody> 
     <tr> 
     <td class="anything"> 
      <table border="0" cellpadding="0" cellspacing="0"> 
      <tbody> 
       <tr> 
       <td> 
        <table border="0" cellpadding="0" cellspacing="0"> 
        <tbody> 
         <tr> </tr> 
         <tr> 
         <td class="secNav"> 
          <a onmouseover="subMenuShow(event, '2', '1')" ; hoverText='Example Sub Menu' target href="trade/new.action">...</a> 
         </td> 
         </tr> 
        </tbody> 
        </table> 
       </td> 
       </tr> 
      </tbody> 
      </table> 
     </td> 
     </tr> 
    </tbody> 
    </table> 
</div> 
//Page object file 
export class PageObject { 
public mainMenuLink: WebElement = element(By.linkText('Example Main Menu')); 
public subMenuLink: WebElement = element(By.linkText('Example Sub Menu')); 

async gettingMenu(): Promise<void> { 

//Mouse over the Main Menu, once this actions is done, a table with submenu appears 
await browser.actions().mouseMove(this.mainMenuLink); 

//Clicking on the submenu link 
await browser.actions().mouseMove(this.subMenuLink); 
await browser.actions().click(this.subMenuLink); 

    } 
} 

回答

1

你錯過.perform()調用。來自官方docs

使用此驅動程序創建一系列用戶操作。在調用webdriver.ActionSequence#perform之前,該序列不會被調度執行。

嘗試:

browser.actions().mouseMove(this.subMenuLink).click().perform(); 
+1

感謝答案,真的幫我傳遞給另一個步驟。 :) –

+0

@KellyJoji好消息!如果您認爲這是您的問題的正確答案,請接受答案。 [這](https://meta.stackexchange.com/a/5235)是一個快速指導爲什麼要接受的答案:) – Mykola

0

你並不需要真正的去用鼠標的元素。

實際上,你可以訪問該元素。

此外,在冷獲得元素,通過類(因爲它具有獨特的類)。

element(by.cssContainingText('.secNav', 'Example Main Menu')).click(); 

element(by.css('.secNav')).click(); 

這應該這樣做,讓我知道,如果它的工作原理。

+0

感謝您的回答@apple,但事情是我沒有一個唯一的類,它是一種動態菜單(根據用戶權限)。 所以,我能夠得到給定的主菜單的子菜單的「列表」,但如何獲得唯一一個(並點擊它)? –

相關問題