如何在独立模式下同步运行webdriverio?

时间:2019-03-07 14:45:11

标签: javascript testing synchronous webdriver-io node-fibers

我正在努力了解是否可以在独立模式下同步运行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)

我将尝试弄清楚该错误的含义以及是否可以解决。任何帮助将不胜感激。

0 个答案:

没有答案