#javascript #selenium #webdriver #mocha.js #webdriver-io
#javascript #selenium #веб — драйвер #mocha.js #webdriver-io #webdriver
Вопрос:
Я использую 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
Кажется, что все тесты выполняются нормально, поэтому я на самом деле не понимаю, на что жалуется это предупреждение и какие негативные последствия может иметь его игнорирование. Итак, я хотел бы а) понять, почему это происходит, и б) как можно было бы избавиться от этого предупреждения, учитывая способ настройки моего кода.
Комментарии:
1. Ну, я обнаружил, что если я перемещаюсь
this.browser.url
внутриit()
блока, который удаляет предупреждение. Все равно было бы неплохо иметь объяснение этому.
Ответ №1:
В моем случае я решаю это, исправляя путь к require
файлам. Я заметил, что мой путь был неправильным. Но ошибка, которую выдает wdio, на самом деле не помогает. :/
Ответ №2:
вы можете взаимодействовать с объектом браузера только внутри it
блоков, потому что он не полностью доступен до запуска сеанса браузера.
См https://webdriver.io/blog/2019/11/01/spec-filtering.html подробнее.
Ответ №3:
Вы просто должны убедиться, что ваш файл спецификации и соответствующий файл страницы хранятся в аналогичной структуре папок.