Может ли кто-нибудь объяснить мне об аннотации @FindBy
в WebDriver
?
Где и для чего он используется?
Может ли кто-нибудь объяснить мне об аннотации @FindBy
в WebDriver
?
Где и для чего он используется?
Это поможет в построении локаторов при использовании Фабрики страниц для поддержки ваших объектов страниц.
Однако я обнаружил, что мне удобнее хранить ваши локаторы как объекты By, а не WebElements, поскольку они более гибкие, и вы, как правило, избегаете попадания в StaleElementException.
By myLocator = By.id("idOfYourElement")
вместо
@FindBy(id = "idOfYourElement")
WebElement myLocator;
Таким образом, вы также можете использовать свои локаторы при подтверждении отсутствия элемента или использовать его в помощниках ExpectedConditions.
Могу ли я процитировать документацию по API ?
Используется для обозначения поля в объекте страницы для указания альтернативного механизма поиска элемента или списка элементов. При использовании вместе с
PageFactory#proxyElement
это позволяет пользователям быстро и легко создавать PageObjects.
Таким образом, если вы используете шаблон PageObject
, вы добавляете эту аннотацию к членам класса и WebDriver
автоматически вставляете в нее соответствующие WebElement
во время инициализации объекта (при вызове PageFactory.initElements()
).
Я настоятельно рекомендую перейти по этой ссылке и прочитать о PageObject
шаблоне и @FindBy
использовании аннотаций с более подробной информацией. Примеры.
changing their locators dynamically
?
- person Slava Semushin; 30.01.2012
@FindBy
используется для получения доступа к элементу на веб-странице с известным идентификатором/именем/и т. д. Если идентификатор элемента создается автоматически, то как WebDriver узнает об этом?
- person Slava Semushin; 30.01.2012
Вы также можете использовать Pagefactory и иметь что-то вроде:
@FindBy(how = How.NAME, using = "logonName")
private WebElement logonNameField;
@FindBy(how = How.NAME, using = "password")
private WebElement passwordField;
Теперь, что касается Как., вы можете иметь:
Или вы можете использовать свой собственный поиск DOM плюс Xpath, который будет вне WebDriver API, но он должен работать.
С помощью класса PageFactory мы используем аннотации @FindBy
для поиска WebElements. Мы используем метод initElements для инициализации веб-элементов. @FindBy
может принимать tagName, partialLinkText, name, linkText, id, css, className, xpath в качестве атрибутов.
Аннотация @FindBy
определяет местонахождение одного или нескольких веб-элементов по одному критерию. Например, чтобы идентифицировать все элементы с одинаковым атрибутом класса, мы могли бы использовать следующую идентификацию:
@FindBy(how = How.CLASS_NAME, using = "classname")
private List<WebElement> singlecriterion;`enter code here`