не является ошибкой функции при вызове метода из базовой страницы pageobject в WebdriverIO

Я использовал шаблон объекта страницы и WebdriverIO и пытался объявить селектор, который будет унаследован на дочерних страницах. я пробовал и то и другое

function Page() {
    this.loader = function() {
        return $("div[class*='loading'] svg");
    }
}

и это

Page.prototype.loader = function() {
    return $("div[class*='loading'] svg");
}

И когда я вызываю эту функцию с дочерних страниц, например

checkoutPage.loader.waitForVisible(5000, true);

Я получаю сообщение об ошибке «checkoutPage.loader.waitForVisible» не является функцией. Как я могу объявить геттер для базовой страницы, чтобы его можно было вызывать из любого дочернего элемента?


person harryfonda    schedule 04.01.2018    source источник
comment
Разве это не должно быть checkoutPage.loader().waitForVisible()?   -  person tehbeardedone    schedule 04.01.2018


Ответы (1)


Когда вы вызываете checkoutPage.loader.waitForVisible(5000, true), вы фактически возвращаете всю функцию loader, а не элемент.

Измените его на checkoutPage.loader().waitForVisible(5000, true);, и ваш первый пример должен работать нормально.

person tehbeardedone    schedule 04.01.2018
comment
Это сработало, спасибо! Любые объяснения, почему это работало без круглых скобок, если я переопределяю загрузчик в checkoutPage, как это? Я не хочу менять сам тест, если мне нужно переопределить загрузчик на дочерней странице. var checkoutPage = Object.create(page, { loader: {get: function() {return $("div[class*='loading'] svg");}} }) module.exports = checkoutPage; - person harryfonda; 04.01.2018
comment
Да, потому что, когда вы используете getter, вы привязываете свойство к функции, которая вызывается при ссылке на это свойство. Итак, когда вы используете get, функция фактически выполняется, когда вы вызываете checkoutPage.loader и возвращаете свой элемент. Он не работает так же, как код, который вы разместили в своем вопросе. Вы можете прочитать больше об этом здесь. developer.mozilla.org/en-US/docs/ Интернет/JavaScript/Справочник/ - person tehbeardedone; 04.01.2018