Webdriver.io — Не удается загрузить файлы спецификаций, скорее всего, потому, что они полагаются на объект `browser`

#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:

Вы просто должны убедиться, что ваш файл спецификации и соответствующий файл страницы хранятся в аналогичной структуре папок.

1