用量角器测试悬停状态的变化
Test hover state changes with protractor
无论我怎么做,我都无法通过量角器测试使悬停状态正常运行。下面的代码是半功能的。
- 在Firefox中运行良好
- 只有当我用Chrome滚动该区域进入视图时才有效。
- 在Phantom JS中失败
obj
.getCssValue('color')
.then(function (color1) {
browser
.actions()
.mouseMove(obj)
.perform()
.then(function () {
obj
.getCssValue('color')
.then(function (color2) {
expect(color1)
.not
.toEqual(color2);
});
});
我们最近也遇到了类似的情况。
帮助我们的是使用browser.wait()
:
function waitForCssValue (elementFinder, cssProperty, cssValue) {
return function () {
return elementFinder.getCssValue(cssProperty).then(function (actualValue) {
return actualValue === cssValue;
});
};
};
用法:
browser.wait(waitForCssValue(obj, 'color', color2), 5000);
在这里,我们基本上等待了5秒CSS color
值等于color2
。在元素悬停后立即应用wait调用。
另外,我记得在SO:
上使用滚动到视图有助于解决类似的问题。browser.executeScript("arguments[0].scrollIntoView();", obj);
最大化浏览器窗口也可以帮助,我们通常在onPrepare()
:
onPrepare: function () {
browser.driver.manage().window().maximize();
},
PhantomJS
的附加说明:
首先,量角器开发人员建议不要使用PhantomJS
运行protrator
端到端测试:
注意:我们不建议使用PhantomJS与Protractor进行测试。有许多报告的问题与PhantomJS崩溃和行为与真实的浏览器不同。
除此之外,参见:
- 在phanttomjs中使用Protractor
这里我想说的是,你应该牺牲"failed in Phantom JS"参数。
解决方案1:
为你的对象使用一个简单的悬停函数
<!DOCTYPE html>
<html>
<body>
<p onmouseover="colorin(this)" onmouseout="colorout(this)">
Testing colorin and colorout function for mouse hover
</p>
<script>
function colorout(x) {
x.style.color = "#000000";
}
function colorin(x) {
x.style.color = "#7FAF00";
}
</script>
</body>
</html>
可能的解决方案2:
尝试使用waitForAngular();你可能需要等待angular:
obj
.getCssValue('color')
.then(function (color1) {
browser.waitForAngular();
browser
.actions()
.mouseMove(obj)
.perform()
.then(function () {
obj
.getCssValue('color')
.then(function (color2) {
expect(color1)
.not
.toEqual(color2);
});
});
可能的解决方案3:
将.mouseMove(obj)
替换为.mouseMove(browser.findElement(protractor.B.id('foo')))
并使其适应您的代码
相关文章:
- React redux初始化功能,无论状态变化如何
- 检测Ionic中特定的应用程序状态变化
- ReactJS-这个状态中的数组在删除时被正确更新,但结果是't,直到以后的状态发生变化
- 消除淘汰中引导程序开关状态变化的歧义
- 反应组件交互和全局状态变化
- 根据单选按钮的状态变化使儿童内容出现/消失
- 观察angular ui路由器的状态变化
- 如何与Redux沟通React组件之间的UI状态变化
- html5事件监听器详细节点状态变化
- 角度/离子谷歌地图的状态变化
- ReactJS -检测状态变化的问题
- 处理ReactJs中的状态变化
- 按钮循环3个状态变化
- 将不断变化的属性值设置为子状态变量
- 捕捉输入字段验证状态的变化
- 离子的状态不断变化.带notify false的transitionTo重置范围变量
- 每次状态变化时的离子运行函数
- FP:在没有实际状态变化的情况下反映状态
- 当Vuex存储状态发生变化时,如何更新Vue组件属性
- ReactJS:如何测试状态变化