我试图在按钮上测试涟漪效果,但在运行测试时,点击大约需要1秒才能完成,此时涟漪效应已经消失。
代码:
let button = element(by.css('#primary-button'));
button.click();
expect(element.all(by.css('#primary-button .ripple-effect')).count()).toBe(1);
我也试过鼠标向下/向上但面临同样的问题。
此示例大约需要10秒钟才能执行:
let button = element(by.css('#primary-button'));
for (let i = 0; i < 10; i++) {
button.click();
}
expect(element.all(by.css('#primary-button .ripple-effect')).count()).toBe(10);
答案 0 :(得分:1)
我会建议几个技巧:
1)禁用此测试的隐式等待browser.manage().timeouts().implicitlyWait(0)
它们在每次搜索元素之前应用,因此可能会引入一点延迟。
2)禁用此测试的角度同步:browser.waitForAngularEnabled(false)
。这也适用于每个操作,但在这里它可能会减慢我们的点击次数。
3)尝试使用低级api -
let button = element(by.css('#primary-button'))
browser.actions().click(button).perform()
这可以通过坐标来实现,所以可能会更快
4)切换到使用browser.executeScript()
在页面上执行javascript - 当出现涟漪效应时,您可以单击并从脚本返回true,然后在测试中断言返回true。也应该是相当快的,但那将是合成点击,而不是像普通用户点击。