Webdriver.io-由于依赖于“浏览器”对象,因此很有可能无法加载规格文件

问题描述

我正在使用Webdriver.io在大量页面上运行测试。因为页面的所有规范都在JSON文件中,所以我有一个特殊的类来设置测试。看起来像这样:

module.exports = class PageTester {
    suiteName = '';
    browser = {};

    constructor (suiteName,browser) {
        this.suiteName = suiteName;
        this.browser = browser;
    }

    testModel(currentModel) {

        describe(this.suiteName + ' endpoint ' + currentModel.url,() => {
            this.browser.url(currentModel.url);
    
            /* it() statements for the test */

        });
    }        
}

然后在我的specs文件夹中,有一个文件可以加载JSON并将其插入PageTester类,如下所示:

const PageTester = require('../modules/PageTester');

const models = require('/path/to/some/file.json');
const pageTester = new PageTester('Some Name',browser);

for (const modelName in models) {
    pageTester.testModel(models[modelName]);
}

运行此代码时,WebdriverIO会向我发出以下警告:

WARN @wdio/mocha-framework: Unable to load spec files quite likely because they rely on `browser` object that is not fully initialised.
`browser` object has only `capabilities` and some flags like `isMobile`.
Helper files that use other `browser` commands have to be moved to `before` hook.
Spec file(s): /suite/test/specs/test.js

所有测试似乎运行良好,所以我实际上不理解此警告所抱怨的内容,以及忽略该警告可能带来的负面后果。因此,我想a)了解为什么会发生这种情况,b)考虑到我的代码设置方式,如何可以消除此警告。

解决方法

您只能与it块内的浏览器对象进行交互,因为在启动浏览器会话之前无法完全访问该对象。

有关详细信息,请参见https://webdriver.io/blog/2019/11/01/spec-filtering.html

,

就我而言,我通过修复 require 文件的路径来解决它。我注意到我的路径是错误的。但是 wdio 抛出的错误并没有真正的帮助。 :/