[英]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.