Как использовать оператор if, если представлен элемент или нет - PullRequest
0 голосов
/ 06 марта 2020

Прежде всего, вот мой код ....

describe('Details page', function () {

    //
    // Email Field
    //

    it('Entering Email', function (done) {

        browser.driver
            .then(() => utils.presenceOf(detailsSpecs.getEmail()))
            .then(() => utils.sendKeys(detailsSpecs.getEmail(), userData.email))
            .then(() => done());
    });


    //
    // Click Next Step Button
    //

    it('Clicking Next Step button', function (done) {

        browser.driver
            .then(() => utils.click(detailsSpecs.getNextStepButton()))
            .then(() => done());
    });


    //
    // Wait for stock to fully load
    //

    it('Waiting for stock to fully load', function (done) {

        setTimeout(function () {
            done();
        }, 5000);
    });


    if (element.all(by.className("generic-error-heading")).first()) {

        it('Clicked all remove button', function (done) {

            let allBtns = detailsSpecs.getRemoveButtonDesktop();

            allBtns.count()
                .then(function (countElement) {

                    console.log('Find buttons: ', countElement)

                    for (let i = 0; i < countElement; i++) { // let variables are scoped to the immediate enclosing block denoted by { }
                        utils.click(detailsSpecs.getRemoveButtonDesktop().first())
                        browser.sleep(1000) // sleep 1s
                    }
                })
                .then(() => {
                    done();
                })

        });


        //
        // Click Next Step Button - Not needed if two above is returning 0
        //

        it('Clicking Next Step button', function (done) {

            browser.driver
                .then(() => utils.elementToBeClickable(detailsSpecs.getNextStepButton()))
                .then(() => utils.click(detailsSpecs.getNextStepButton()))
                .then(() => done());
        });
    } else {
        it('DONE', function (done) {

            browser.driver
                .then(() => console.log("YES"))
                .then(() => done());
        });
    }
});

Я пытался ускорить свои тестовые случаи, пропуская, если элемент не представлен. Если он не представлен, то мы пропускаем все внутри оператора if-, в противном случае мы выполняем тестовые случаи.

У меня есть элемент, который я хочу просмотреть, который element.all(by.className("generic-error-heading")).first() (должен быть 2, но для меня просто важно, представлен он или нет)

Моя проблема в том, что сейчас он просто пропускает его и выполняет утверждение Else, даже если элемент представлен в HTML.

У меня вопрос: как я могу сделать правильное выражение if-else, где оно фактически делает операторы if, если есть элемент, представленный иначе, пропустить?

1 Ответ

0 голосов
/ 06 марта 2020

изменить if (element.all(by.className("generic-error-heading")).first()) на:

 if (expect(element.all(by.className("generic-error-heading")).first().isDisplayed()).toBe(true))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...