量角器browser.actions()。mouseMove()没有显示悬停效果

时间:2016-03-26 03:53:35

标签: protractor mouseover

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

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

我尝试了多种方法,但都没有。

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

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

使用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

答案 3 :(得分:0)

我遇到同样的问题,2个小时后,我发现这项工作适合我:

src: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);