如果存在元素则如何使用if else语句

问题描述 投票:0回答:1

首先是我的代码。...

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-statement内的所有内容,否则我们将进行测试用例。

我有一个要监视的元素,它是element.all(by.className("generic-error-heading")).first()(应该为2,但对我来说,它是否要显示就很重要)

我的问题是,即使元素显示在HTML中,它现在也会跳过它并执行Else语句。

我的问题是,如果存在元素,则如何在正确的if语句中进行正确的if-else声明?

javascript selenium protractor mocha chai
1个回答
0
投票

更改if (element.all(by.className("generic-error-heading")).first())创建人:

 if (element.all(by.className("generic-error-heading")).first().isDisplayed())
© www.soinside.com 2019 - 2024. All rights reserved.