0

该 url 显示了 WebdriverIO 测试运行器配置

https://webdriver.io/docs/configurationfile.html

它有很多钩子。onComplete考虑我想写一个函数的钩子,可能是a function to create a file. onComplete在另一个文件中并在钩子中调用该函数。你能帮我实现这个目标吗?

4

2 回答 2

0

它可能晚了,但你可以这样做:

/** 保持你的函数的文件应该在 es5 中,或者你必须在 WebdriverIO 启动之前添加 babel 以将其转换为 es6 **/

测试.js

module.exports = function foo(){
   console.log('here');
}

在配置文件中 //export.config 之前:

const foo = require('path-to-test.js');

在 onComplete() 钩子中使用 foo()

于 2019-09-12T11:06:07.373 回答
0

是的,你几乎描述了流程。

在文件中定义您的函数并将其导出:

module.exports = (() => {
  /** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    * > Def: Polls the DOM until the given 'desiredState' is found. 
    * @param    {string} desiredState ['loading', 'interactive', 'complete']
    * @returns  {Promise} WebdriverIO Promise
    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  browser.addCommand('waitForReadyState', (desiredState) => {
    let foundState;

    browser.waitUntil(() => {
      foundState = browser.execute('return document.readyState;');
      console.log(`\n> Waiting for page to load ... | Current state: '${foundState}'`);
      return foundState === desiredState;
    }, browser.options.waitforTimeout, `Timeout before expected state! Found: '${foundState}' | Expected: '${desiredState}'`);
  });
})();

然后,将其导入所需的钩子(例如:对于custom_commandbefore钩子):

before: function (capabilities, specs) {
  require('./test/custom_commands/waitForReadyState');
}

您可以轻松地重现模型以实现您需要在onComplete挂钩中运行的日志记录和文件操作功能。

于 2019-08-03T10:21:46.090 回答