我是新的量角器,打字稿,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);
}
}
答案 0 :(得分:1)
您缺少.perform()调用。来自官方docs:
使用此驱动程序创建一系列用户操作。在调用webdriver.ActionSequence#perform之前,不会安排执行序列。
尝试:
77.65B 86.73B 92.97B 84.7B 89.4B
答案 1 :(得分:0)
您无需使用鼠标实际转到该元素。
您实际上可以访问该元素。
另外,你按类来冷获取元素(因为它有唯一的类)。
element(by.cssContainingText('.secNav', 'Example Main Menu')).click();
或
element(by.css('.secNav')).click();
这应该这样做,让我知道它是否有效。