Typescript не работает, когда элемент не найден - PullRequest
0 голосов
/ 26 декабря 2018

Я использую Typescript-транспортир Жасмин.Когда элемент не найден, он не проходит тестовый случай (блок 'it').Он показывает UnhandledPromiseRejectionWarning, но все равно показывает сценарий как пройденный.

   await element(by.xpath("xpath")).click().then(()=>{logObj.info("clicked")});

1 Ответ

0 голосов
/ 27 декабря 2018

Чтобы правильно обрабатывать такие случаи, вы должны работать с ожиданием (утверждать).Если щелчок или другое действие не является успешным, это не означает, что тест не пройден.Вы должны указать, когда произойдет сбой.

Например:

it('should do something smart', async (done) => {
    await element(by.xpath('dsadadada')).click()
        .then(() => {
            logObj.info("clicked");
        })
        .catch(rejected => {
            logObj.info("it was not clicked due rejected promise");
            done.fail(rejected); // fail the test
        });

    done();
});

Или работать с обработкой исключений 'try catch':

   it('should do something smart', async (done) => {

        try {
            await element(by.xpath('dsadadada')).click(); // will throw error if not clickable
            await element(by.xpath('dsadadada')).sendKeys('dasdada'); // will throw error if cannot sendkeys

        } catch (e) {
            done.fail(e); // will fail the test if some action throw an error.
        }

        done(); // if there is no error will mark the test as success
    });

или с ожиданиями

it('should do something smart', async (done) => {

        await element(by.xpath('dsadadada')).click(); // will throw error if not clickable
        expect(element(by.xpath('some new element on the page after click')).isPresent()).toBeTruthy();
        done();
    });

Пример инкапсулированного POM

public class PageObjectClass {
        // action of click.
        public async clickOnXBtn() {
            await await element(by.xpath('dsadadada')).click();
        }
    }

    it('do something dummy', async (done) => {
        try {
            // pageobject is class which holds the action for this button.
            const pageObject = new PageObjectClass();

            await pageObject.clickOnXBtn();
        } catch (e) {
            done.fail(e);
        }

    });

Подробнее о POM можно прочитать здесь: https://github.com/angular/protractor/blob/master/docs/page-objects.md

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...