Javascript 如果找不到元素,appium nodejs(wd)将挂起

Javascript 如果找不到元素,appium nodejs(wd)将挂起,javascript,android,node.js,mocha.js,appium,Javascript,Android,Node.js,Mocha.js,Appium,我在使用appium+nodejs(wd)+mocha时遇到了一个问题,因为我有一个加载视图(黑盒测试&我不是android应用程序开发人员),我想等待它的消失。所以我试过这样的方法: wd.addPromiseChainMethod('WaitForElementById',函数(id,重试){ var self=这个; 返回新承诺(功能(解决、拒绝){ (函数WaitForElement消失(重试,上下文){ 如果(重试

我在使用appium+nodejs(wd)+mocha时遇到了一个问题,因为我有一个加载视图(黑盒测试&我不是android应用程序开发人员),我想等待它的消失。所以我试过这样的方法:

wd.addPromiseChainMethod('WaitForElementById',函数(id,重试){
var self=这个;
返回新承诺(功能(解决、拒绝){
(函数WaitForElement消失(重试,上下文){
如果(重试<0){
返回拒绝();
}
否则{
试一试{
elementByIdIfExists(id,函数(err,元素){
log('找到的元素:'+Element+'重试:'+retry');
if(元素的类型=='undefined'){
返回resolve();
}
否则{
setTimeout(()=>WaitForElementEvalises(重试-1,上下文),1000;
}                  
});
}
捕获(错误){
console.log(错误);
返回拒绝();
}
}
})(重试,自我);
});
});
在加载视图消失之前,一切正常,因为随后nodejs开始挂起appium独立控制台输出:

信息:[debug][BOOTSTRAP][debug]使用:UiSelector[RESOURCE\u ID=de.myapp.foo:ID/loadingView] 信息:[debug][BOOTSTRAP][debug]getElements选择器:UiSelector[RESOURCE_ID=de.myapp.foo:ID/loadingView] 信息:[debug][BOOTSTRAP][debug]元素[]为空:(0)

反复重复,直到超时为止

我还尝试:

haseElementById(值,cb)->cb(错误,布尔)

elementByIdOrNull(value,cb)->cb(err,element)

elementsById(value,cb)->cb(err,element)
(并检查元素列表是否为空)

以及其他语法方式,如:

context.elementByIdIfExists(id).then(element=>{…})

但每次我的输出都是这样的:

Element found: 15 retry: 30
Element found: 15 retry: 29
Element found: 15 retry: 28
Element found: 15 retry: 27

# hangs because the loading view was disappeared and appium standalone starts to repeat the [debug][info] section above ...

感谢阅读和帮助

我以前使用过appium standalone,现在改为最新的npm appium版本1.6.x。但最后设置了
.setImplicitWaitTimeout(250)
在我的方法之前,并在该方法之后重置它。我以前使用appium standalone,现在更改为最新的npm appium版本1.6.x。但最后,在我的方法之前设置
。setImplicitWaitTimeout(250)
并在该方法之后重置它,我完成了该技巧