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