【发布时间】:2019-11-11 13:24:08
【问题描述】:
我有一个 Selenium webdriverIO V5 框架。我在这里面临的问题是,以下代码在 Mac OS 上运行良好,但在 Windows 操作系统上无法正常运行。在 Windows 操作系统中,它会遇到无限循环问题。
下面的代码功能是:合并yaml文件(包含定位器)并通过传递键返回定位器的值:
const glob = require('glob');
const yamlMerge = require('yaml-merge');
const sleep = require('system-sleep');
let xpath;
class Page {
getElements(elementId) {
function objectCollector() {
glob('tests/wdio/locators/*.yml', function (er, files) {
if (er) throw er;
xpath = yamlMerge.mergeFiles(files);
});
do {
sleep(10);
} while (xpath === undefined);
return xpath;
}
objectCollector();
return xpath[elementId];
}
}
module.exports = new Page();
【问题讨论】:
-
如果你不想使用异步东西的好处,尤其是与 io 相关的东西,为什么还要使用 nodejs。只是不要使用睡眠或其他阻塞调用。
-
框架是nodeJS。那么您是否建议在“做”部分中删除睡眠?
-
是的。避免你的 dowhile 循环,并通过从 getElements 返回一个 Promise 或向它传递一个回调来熟悉异步范例
标签: javascript selenium-webdriver webdriver-io