CSS更新中的这种异步性似乎是量角器/
webdriver应该能够等待的东西。您的应用程序在执行悬停时实现CSS更新方面是否有异常行为?是否以某种方式指定动画或更新延迟?
就是说,我认为有些时候量角器无法得知更新可能需要一些时间,因此我认为您可以使用其他方法编写测试。除了期望该值是您想要的值(并与浏览器中的更改竞争),您还可以将测试改写为“
wait-until-value-I-want-ups-ups”吗?(失败案例的速度稍慢且较难看,但希望这种情况很少见。)
检查将
text-decoration其移至“下划线”似乎更简单(并且可能两者都会“立即”更改,因此您只需要等待一个,然后再检查另一个即可?)
因此删除:
expect(scope.page.forgotPassword.getCssValue("text-decoration")).toEqual("underline");并使用类似以下未经测试的代码:
browser.wait(function() { return scope.page.forgotPassword.getCssValue("text-decoration")).then(function(value) { return value === 'underline'; });(或为此使用“ 预期条件”基础结构?)
您应该能够在函数中隐藏一些丑陋的地方:
function waitForValue(valPromise, expectedVal) { return browser.wait(function() { return valPromise.then(function(value) { return value === expectedValue; }); });}// Now your test can contain:waitForValue(scope.page.forgotPassword.getCssValue("text-decoration"), 'underline');


