Чтобы правильно обрабатывать такие случаи, вы должны работать с ожиданием (утверждать).Если щелчок или другое действие не является успешным, это не означает, что тест не пройден.Вы должны указать, когда произойдет сбой.
Например:
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