Testcafe: .include () не является функцией при использовании в операторе if / else - PullRequest
3 голосов
/ 09 января 2020

Я пытаюсь использовать оператор if / else в одном из моих случаев в Testcafe, но условие состоит в том, чтобы увидеть, содержит ли строка слово (подстрока) и работает ли она, если нет, go to else

Вот пример кода:

const textData = Selector('.css-f3fafa').innerText;

        if (textData.includes("Administrator") ) {
            await t
            .hover(button1)
            .expect(button).eql('Submit')
            .click(buttonUp)
            .setNativeDialogHandler(() => true)
            .click(modalSub)
            .wait(5000)
            .expect(thank).eql('Thank you for your submission.')

        } else {
            await t
            // .hover(button1)
            // .expect(button).eql('Sign Up')
            .expect(textData).contains('Administrator')
            .click(button1)
            .expect(getStarted).ok('Get Started')
        }

Я продолжаю получать сообщение об ошибке типа: textData.includes... is not a function, но если я сделал .expect(textData).includes..., это прекрасно работает и проходит. Я также попытался indexOf, добавив a === true к условию, я попытался добавить String() к переменной, и это вроде сработало, но оно пропустило право на другое (не передает If, даже если условие истинно)

Есть ли другой способ заставить это условие работать с Testcafe?

1 Ответ

6 голосов
/ 09 января 2020

Свойства и методы узла DOM реализованы как асинхронные геттеры.

Использование селекторов | TestCafe -> Получить состояние элемента :

"Селекторы и обещания, возвращаемые селекторами, предоставляют API для получения состояния (размер, положение, классы и т. Д. c.) Соответствующего элемента. См. Состояние узла DOM . Обратите внимание, что эти методы и методы получения свойств являются асинхронными, поэтому используйте await для получения свойства элемента . "

Примеры из документации:

const headerText = await Selector('#header').textContent;
import { Selector } from 'testcafe';

fixture `My fixture`
    .page('http://devexpress.github.io/testcafe/example/');

const windowsInput = Selector('#windows');

test('Obtain Element State', async t => {
    await t.click(windowsInput);

    const windowsInputChecked = await windowsInput.checked; // returns true
});
...