Селекторы элементов объекта ночного просмотра не работают с @ нотацией - PullRequest
0 голосов
/ 26 февраля 2020

Селекторы, когда они передаются с использованием нотации @ из тестовой функции в объект страницы, не работают.

Вот объект моей домашней страницы.

module.exports = {

    url: function () {
        return this.api.launchUrl;
    },

    elements: {
        dropdownSelector: {
            selector: '#input-13',
            locateStrategy: 'css selector'
        },
        dropdownAuthSelector: {
            selector: '#list-item-18-5 > span > span.ml-1',
            locateStrategy: 'css selector'
        },
    },

    commands: [{

        setDropdown(selector, value) {
            let { selectDropdown } = require('../modules/Utils.js');
            selectDropdown(this.api, selector, value);
            return this;
        }

    }]

};

Утилиты. js

module.exports.selectDropdown = function (self,selector,value) {

    return self.click(selector).click(value);


}

Проверка js файла.

module.exports = {

    '@tags': ['home'],

    'Dashboard Dropdown test'(browser) {
        const homePage = browser.page.homepage();
        homePage
            .navigate()
            //.setDropdown(homePage.elements.dropdownSelector.selector, homePage.elements.dropdownAuthSelector.selector)
            .setDropdown('@dropdownSelector', '@dropdownAuthSelector')
            .assert.urlContains('Authentication').end();
    }

};

Так что в основном setDropdown (homePage.elements.dropdownSelector.selector, homePage.elements.dropdownAuthSelector.selector) Работает нормально, но когда я использую @ обозначение, это не ' t работает .setDropdown ('@ dropdownSelector', '@dropdownAuthSelector') и выбрасывает ниже ошибки

Ошибка Ошибка при выполнении действия протокола .locateMultipleElements (): недействительный селектор: указан недопустимый или недопустимый селектор

Ошибка при выполнении действия протокола .locateMultipleElements (): недопустимый селектор: указан недопустимый или недопустимый селектор

1 Ответ

0 голосов
/ 27 февраля 2020

Я не думаю, что к ним можно получить прямой доступ через @ из-за поведения очереди в Nightwatch. Команды объекта страницы не добавляются в основную очередь автоматически. Кроме того, почему бы не определить объект страницы пользовательской команды HomePage, где вы можете получить к ним прямой доступ, а затем просто вызвать эту команду в тесте?

...