我正在努力了解是否可以在独立模式下同步运行wdio。
const { remote } = require('webdriverio')
const Fiber = require('fibers')
Fiber(function () {
const driver = remote(/* Excluded for brevity */)
console.log('Before')
driver.pause(10000)
console.log('After')
driver.deleteSession()
}).run()
运行此命令时,我收到以下日志:
DEBUG @wdio/config: @wdio/sync not found, running tests asynchronous
因此,我认为很好,如果我安装@ wdio / sync,它将自动以同步模式执行。但是,在npm i -S @wdio/sync
之后,我仍然得到相同的日志,这对我来说没有任何意义。
我删除了node_modules并重新安装了它们,但是同样的问题。这些是我对package.json
的依赖:
"dependencies": {
"@wdio/sync": "^5.7.1",
"fibers": "^3.1.1",
"webdriverio": "^5.7.1"
}
我还仔细检查了fibers
中的@wdio/sync
版本是否相同。
无论如何,如您所料,driver
是一个承诺,因此上述代码因以下错误而失败:
TypeError: driver.pause is not a function
最后,我这样做的原因是因为我想将会话创建与测试执行分离,允许测试用例按需创建和销毁会话,同时保持同步执行。
更新:经过更多调查,我发现导入失败@wdio/sync
的原因如下:
ERROR @wdio/config: Error: You can't reassign a plugin after appling another plugin
at Object.apply (/project/node_modules/loglevel-plugin-prefix/lib/loglevel-plugin-prefix.js:49:13)
at Object.<anonymous> (/project/node_modules/@wdio/sync/node_modules/@wdio/logger/build/node.js:116:31)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/project/node_modules/@wdio/sync/node_modules/@wdio/logger/build/index.js:20:10)
我将尝试弄清楚该错误的含义以及是否可以解决。任何帮助将不胜感激。