Webdriver.io - 很可能无法加载规范文件,因为它们依赖于“浏览器”对象

问题描述 投票:0回答:5

我正在使用 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 */

        });
    }        
}

然后在我的规格文件夹中,我有一个加载 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) 根据我的代码设置方式,如何消除此警告。

javascript selenium webdriver mocha.js webdriver-io
5个回答
5
投票

就我而言,我通过修复

require
文件的路径来解决它。我发现我的路错了。但是 wdio 抛出的错误并没有真正的帮助。 :/


3
投票

您只能与

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

详情请参阅https://webdriver.io/blog/2019/11/01/spec-filtering.html


0
投票

您只需确保您的规范文件和相应的页面文件保存在类似的文件夹结构中。

1


0
投票
// import { it } from "mocha";
// import { $ } from "webdriverio/build/commands/browser";

评论这两个不需要的导入。效果会很好


0
投票

就我而言, 发生这种情况是因为我的代码中添加了这一行 -

const { format, addMonths, isSameMonth, isSameDay } = require('date-fns');

使用安装解决-

npm install date-fns

安装后可以正常运行

© www.soinside.com 2019 - 2024. All rights reserved.