因为 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 变量我定义成了全局变量。


↙↙↙阅读原文可查看相关链接,并与作者交流