по @FindAll(@FindBy(xpath = "//div[@class="foo"]")) получаю список из WebElement.
Необходимо проверить наличие на странице элемента с нужным текстом (например “YYY”).
Т.к. таких проверок много, хотелось бы избежать лишних преобразований массива и обойтись одним assertThat на проверку.
На данный момент не понимаю, как проверить в списке вебэлементов наличие какого-либо с нужным текстом .
Изначально пытался обойтись конструкцией:
@FindAll(@FindBy(xpath = "//div[@class="foo"]/text()"))
public static List<WebElement> elements;
assertThat(elements, contains("YYY");
но массив в итоге пустой и вообще, похоже, с text() так не получится.
Может кто из более опытных коллег знает правильную конструкцию матчера для этого?
Натыкался на что-то связанное с hasProperty, но пока не осознал, как правильно с ним работать.
Ну если не хочется заморачиваться с перебором элементов в коллекции, то постройте xpath который точно найдет нужны вам элемент
что-то вроде такого: //div[contains(@class,'foo') and contains(text(), 'YYY')]
@FindAll(@FindBy(xpath = "//div[@class='foo']"))
public List<WebElement> elements;
import static org.hamcrest.Matchers.hasItem;
import static ru.yandex.qatools.htmlelements.matchers.WebElementMatchers.hasText;
// ...
assertThat("В списке элементов есть элемент 'YYY'", elements, hasItem(hasText("YYY")));