量角器 browser.actions().mouseMove() 不显示悬停效果

protractor browser.actions().mouseMove() not showing hover effects

我是量角器的新手,我正在尝试为默认关闭的滑块面板添加​​测试,将鼠标悬停在上面会打开它,然后滑块面板上有一个项目列表可供选择。

<div class="slider" [ngClass]="{ closed: state === 1, open: state === 2}" (click)="onClick($event)" (mouseover)="onMouseOver($event)" (mouseleave)="onMouseLeave($event)">

我尝试了多种方法,none 其中有效。

第一次尝试:(无悬停效果,即什么都不做)

browser.actions().mouseMove(element(by.css('.slider.closed'))).perform();

第二次尝试:(出现错误:指定了无效或非法的选择器)

browser.actions().mouseMove(element(by.css('[(mouseover)="onMouseOver($event)"]'))).perform();

第三次尝试:(出现错误:使用定位器未找到元素)

browser.actions().mouseMove(element(by.css('[mouseover="onMouseOver($event)"]'))).perform();

这应该有效,除非您有多个元素 class .slider。此时,您可能会尝试包含父对象或其他定位器策略。

browser.actions().mouseMove($('.slider')).perform();

我使用了 webdriver 并使它工作。 browser.executeScript('arguments[0].click()',browser.driver.findElement(By.css('.slider')));

我在 运行 使用 firefox 测试时遇到了同样的问题 并找出如下解决方案

if (browser.isFirefox) {
 var script = `if(document.createEvent) {
      var evObj = document.createEvent('MouseEvents');
      evObj.initEvent('mouseover', true, false);
      arguments[0].dispatchEvent(evObj); 
    } else if (document.createEventObject) { 
      arguments[0].fireEvent('onmouseover'); 
    }`;
  browser.executeScript(script, elm.getWebElement());
  return elm.click();
} else {
return browser.actions()
  .mouseMove(elm.getWebElement())
  .click()
  .perform();
}

测试: 量角器:5.1.1 硒:3.4.0

我只是遇到了同样的问题,2 小时后,我发现这个对我有用:

来源:java mouse over using javascript

 let loginElement = await driver.findElement(By.id('header-user'));
    let strJavaScript = "var element = arguments[0];"
    + "var mouseEventObj = document.createEvent('MouseEvents');"
    + "mouseEventObj.initEvent( 'mouseover', true, true );"
    + "element.dispatchEvent(mouseEventObj);";
    await driver.executeScript(strJavaScript, loginElement);