Поиск FindBys
FindBys используются для маркировки поля на объектах страницы , чтобы указать, что поиск должен использовать серию @FindBy
тегов в цепочке как описано в ByChained
. В качестве примера:
@FindBys({@FindBy(id = "foo"),
@FindBy(className = "bar")})
Класс ByChained
ByChained механизм, используемый для поиска элементов в документе с использованием ряда других поисков. Этот класс найдет все элементы DOM, которые соответствуют каждому из локаторов в последовательности, например Asan:
driver.findElements(new ByChained(by1, by2))
В приведенной выше строке кода будут найдены все элементы, которые соответствуют by2
и отображаются в элемент, который соответствует by1
. Таким образом, по сути, вы не должны использовать оба by
на одном и том же узле, но один by
для parent узла и другой для child , и вы можете использовать следующее Стратегия локатора :
@FindBys({@FindBy(tagName = "h5"), @FindBy(tagName = "strong")})
private WebElement EmailLabel;
В идеале, чтобы найти <span>
с текстом Какой у вас адрес электронной почты? Вы можете использовать любой из следующих Стратегии локатора :
Использование css:
@FindBys({@FindBy(css = "h5#email_label>strong"), @FindBy(tagName = "span")})
private WebElement EmailLabel;
Использование xpath :
@FindBys({@FindBy(xpath = "//h5[@id='email_label']/strong"), @FindBy(xpath = "//span[contains(., 'your email address')]")})
private WebElement EmailLabel;