因为 Macaca 的缘故接触到 nodeJS,nodeJS 的异步思想有时候确实让人很头疼。
最近遇到这样一个场景,需要循环获取滚动条的值,直到滚动条的值等于 100% 再执行下一步。很郁闷的是 node 的异步思想让这个需求实现起来并没有那么简单,while 循环直接就 GG 了!经过一番折腾,给出如下解决方案,分享给小伙伴!一句话总结就是:把获取元素属性的操作封装成一个函数递归调用!代码如下:
d.addPromiseChainMethod('waitForElmentValueByName', function(elementName){
return this
.elementByName(elementName).getProperty("value")
.then(function(value){
if(value != "100%"){
return driver.waitForElmentValueByName(elementName)}
else{
return value;
}
})
});
上述代码中,elementName 是元素的 name 属性,相对应的可以使用其他元素查找的 api。同样的,如果需要判断其它属性也只需要做对应修改即可!driver 变量我定义成了全局变量。