问题描述
我正在使用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 抛出的错误并没有真正的帮助。 :/