我是量角器的新手并尝试为滑块面板添加测试,默认情况下该滑块面板关闭,将鼠标悬停在上面会打开它,然后滑块面板上有一个项目列表可供选择。
<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();
答案 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);