Как использовать транспортир, чтобы проверить, присутствует ли элемент? - PullRequest
0 голосов
/ 16 июня 2020

Вот мой код, я пытаюсь проверить, что если exit_without_save отображается на экране, он взаимодействует с exit_without_save, в этом случае щелкните, но он только показывает мне ошибку, что он не может найти элемент. Правильно ли я делаю?

var new_button = browser.element(by.xpath('xpath'));
var exit_without_save = browser.element(by.xpath('xpath'));

await new_button.click();

if(await exit_without_save.isDisplayed()) {
     await exit_without_save.click();
     browser.sleep(500);
}

Ответы [ 3 ]

0 голосов
/ 17 июня 2020

вы должны сначала убедиться, что элемент присутствует в DOM. Метод isDisplayed() предполагает, что элемент уже отображается на странице. Сначала нужно дождаться его присутствия. Попробуйте что-то вроде этого:

var EC = protractor.ExpectedConditions;
var new_button = browser.element(by.xpath('xpath'));
var exit_without_save = browser.element(by.xpath('xpath'));

await new_button.click();

if (await exit_without_save.isPresent()) {
     await browser.wait(EC.visibilityOf(exit_without_save));
     return await exit_without_save.click();
}
0 голосов
/ 18 июня 2020

Вы можете попробовать это!

ExpectedConditions API используется в транспортире для проверки наличия элемента. ExpectedConditions.presenceOf: Ожидаемое значение для проверки наличия элемента в DOM страницы. Это не обязательно означает, что элемент виден.

var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be present on the dom.
browser.wait(EC.presenceOf($('#abc')), 5000);

ExpectedConditions.visibilityOf: Ожидание для проверки того, что элемент присутствует в DOM страницы и является видимым. Видимость означает, что элемент не только отображается, но также имеет высоту и ширину, превышающие 0.

var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be visible on the dom.
browser.wait(EC.visibilityOf($('#abc')), 5000);

Решение: Использовать visibilityOf вместо присутствииOf [Больше преимуществ]

var EC = protractor.ExpectedConditions;
var new_button = browser.element(by.xpath('xpath'));
var exit_without_save = browser.element(by.xpath('xpath'));

await browser.wait(EC.visibilityOf(new_button));
await new_button.click();

await browser.wait(EC.visibilityOf(exit_without_save));
await exit_without_save.click();
browser.sleep(500);
0 голосов
/ 16 июня 2020

isDisplayed () возвращает логическое значение, которое вы можете использовать, если оно истинно / ложно в операторе if.

if(await (exit_without_save.isDisplayed())==true) {
     await exit_without_save.click();
     browser.sleep(500);
}
...