gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:14 25 4
gpt4 key购买 nike

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

wd.addPromiseChainMethod('waitForElementByIdDisappears', function (id, retries) {
var self = this;
return new Promise(function (resolve, reject) {
(function waitForElementDisappears(retry, context){
if(retry < 0) {
return reject();
}
else {
try {
context.elementByIdIfExists(id, function(err, element) {
console.log('Element found: ' + element + ' retry: ' + retry);
if(typeof element === 'undefined') {
return resolve();
}
else {
setTimeout(() => waitForElementDisappears(retry-1, context), 1000);
}
});
}
catch (error) {
console.log(error);
return reject();
}
}
})(retries, self);
});
});

一切正常,直到加载 View 消失,因为那时nodejs开始挂起appium独立控制台输出:

info: [debug] [BOOTSTRAP] [debug] Using: UiSelector[RESOURCE_ID=de.myapp.foo:id/loadingView] info: [debug] [BOOTSTRAP] [debug] getElements selector:UiSelector[RESOURCE_ID=de.myapp.foo:id/loadingView] info: [debug] [BOOTSTRAP] [debug] Element[] is null: (0)

一遍又一遍地重复,直到超时为止。

我也尝试过:

hasElementById(value, cb) -> cb(err, boolean)

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,现在更改为最新的 npm appium 版本 1.6.x。但最终在我的方法之前设置 .setImplicitWaitTimeout(250) 并在该方法之后重置它对我来说起到了作用。

关于javascript - 如果找不到元素,appium nodejs (wd) 将挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43777816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com