繁体   English   中英

如何从量角器的随机菜单中获取元素?

[英]How to get an element from a random menu in protractor?

我是量角器,打字稿,JavaScript的新手。.所以,我不知道我到底在做什么错。

该webelement只返回一个对象,我无法执行该操作以单击该链接。 我如何获得linkText? 我尝试使用其他形式,例如id,css,标记名,但由于某种原因,该对象有时会丢失。 有人有这种问题吗?

//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);

    }
}

您缺少.perform()调用。 来自官方文档

使用此驱动程序创建一系列用户操作。 在调用webdriver.ActionSequence#perform之前,不会安排执行该序列。

尝试:

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

您实际上不需要使用鼠标转到元素。

您实际上可以访问该元素。

另外,您可以按类(因为它具有唯一的类)来冷获取元素。

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

要么

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

应该这样做,让我知道它是否有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM