我正在尝试测试按钮上的连锁反应,但在运行测试时,一次点击大约需要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);
发布于 2017-08-24 03:39:52
我建议几个技巧:
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。这也应该是相当快的,但这将是合成点击,而不是像普通用户做点击。
https://stackoverflow.com/questions/45841309
复制相似问题