Транспортир - если есть представленный элемент, тогда пропустите - PullRequest
0 голосов
/ 05 марта 2020

Я пытался выяснить, какой способ устранения тестирования не нужен, если представлено значение или нет.

То, что я создал, заключается в том, что в данный момент я вынужден всегда проходить тестирование из-за теста, который я провел, но теперь я осознаю, что мне нужен своего рода оператор IF-ELSE, чтобы ускорить тестирование, так как будет 4 тестовых случая, которые не нужны, ЕСЛИ значение не представлено.

Я сделал следующее:

//
//
// IF THIS IS TRUE THEN CONTINUE, ELSE WE SKIP TOTALLY
//

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

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

    //
    // Check if stock conflict
    //

    it('Checking stock conflict', function (done) {
        browser.driver
            .then(() => utils.presenceOf(detailsSpecs.getStockConflictMsg()))
            .then(() => done());
    });


    // Click Remove Button Button
    //

    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++) {
                    utils.click(detailsSpecs.getRemoveButtonDesktop().first())
                    browser.sleep(1000) // sleep 1s
                }
            })
            .then(() => {
                done();
            })

    });

    //
    // Click Next Step Button
    //

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

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

ELSE
    SKIP

В основном, что происходит, если первый тестовый случай истинно (имеется в виду представленное значение), тогда мы продолжим делать все остальное, ЕСЛИ этого не произойдет, он автоматически перенаправит c на другую страницу, и вот с чем у меня проблемы ... Потому что у меня стандартный тайм-аут 1 минута, и это означает, что я потрачу 4 минуты на тестирование, поскольку первый тестовый пример не представлен, поэтому я хотел бы пропустить оставшуюся часть, если первый тестовый случай не соответствует действительности.

Мой вопрос заключается в том, как лучше всего сделать оператор IF-ELSE, чтобы пропустить контрольные примеры, если первый контрольный пример не представлен?

РЕДАКТИРОВАТЬ:

const stockConflictIsPresent = function (done) {
    return browser.driver
        .then(() => utils.presenceOf(detailsSpecs.getStockConflictMsg()))
        .then(() => done());
}


if (stockConflictIsPresent) {

    // Click Remove Button Button
    //

    it('Sleep', function (done) {

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

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

        browser.driver
            .then(() => utils.elementToBeClickable(detailsSpecs.getNextStepButton()))
            .then(() => utils.click(detailsSpecs.getNextStepButton()))
            .then(() => done());
    });
} else {
    console.log("Done")
}

Ответы [ 2 ]

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

Вы можете добавить условие в свой оператор if, чтобы проверить, присутствует ли ваш nextStepButton:

const nextButtonIsPresent = function(done) {
  return browser.driver
        .then(() => detailsSpecs.getNextStepButton().isPresent())
        .then(() => done());
}

if (nextButtonIsPresent) {
  //... continue with the normal process here
} else {
  //... do your skip logic here
}
0 голосов
/ 05 марта 2020

нам нужно больше информации о вашем первом тестовом примере.
вам нужно проверить, соответствует ли утверждение вашего элемента (или условия зависит от вашего случая)

if(myElement.isPresent()){

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

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

    //
    // Check if stock conflict
    //

    it('Checking stock conflict', function (done) {
        browser.driver
            .then(() => utils.presenceOf(detailsSpecs.getStockConflictMsg()))
            .then(() => done());
    });


    // Click Remove Button Button
    //

    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++) {
                    utils.click(detailsSpecs.getRemoveButtonDesktop().first())
                    browser.sleep(1000) // sleep 1s
                }
            })
            .then(() => {
                done();
            })

    });

    //
    // Click Next Step Button
    //

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

        browser.driver
            .then(() => utils.elementToBeClickable(detailsSpecs.getNextStepButton()))
            .then(() => utils.click(detailsSpecs.getNextStepButton()))
            .then(() => done());
    });
}
else ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...