Пытаясь использовать аннотацию @FindBy
, я чувствую, что нет идеального способа проверить наличие элемента.
Подобные обсуждения есть здесь или здесь, но я вижу только обходные пути и ничего подобного
@FindBy (id = "abc")
private WebElement TestElement;
if (TestElement.isPresent) {...};
Я нашел решения с @FindBys
, но таким образом мне нужно реализовать дополнительный @FindBys
для каждого элемента, наличие которого я бы проверял в DOM? Не очень приятно.
Каждое альтернативное решение с ExpectedConditions.presenceOf...
или что-либо, использующее FindElement
, нуждается в локаторе в качестве параметра вместо WebElement, верно?
Конечно, я могу создавать обходные пути, используя, например. ExpectedConditions.elementToBeClickable(WebElement)
внутри try/catch и поднять org.junit.jupiter.api.Assertions.fail
, но это не настоящая проверка DOM.
Мне кажется, что я более гибок с классическими By
определениями объектов страницы (например, private By searchInput = By.xpath("\\input[@class='input_search']");
) вместо использования @FindBy
. Используя @FindBy, я всегда имею дело с самим WebElement и нет возможности проверить наличие раньше, верно?
Каковы наилучшие практические решения для проверки наличия элементов DOM в контексте объектов страницы с использованием @FindBy
? Или я должен остаться с By
, чтобы быть в безопасности.
ExpectedConditions.presenceOf...
не работает. В любом случае вам нужен локатор для элемента, который вы проверяете. Я знаю, что что-то упускаю, но вопрос не ясен. - person pdrersin   schedule 18.02.2020