답변
API-documentation을 인용 할 수 있습니까? 요소 또는 요소의 목록을 특정하는 대체 메커니즘을 나타 내기 위해 Page 개체에 필드를 표시하는 데 사용
.PageFactory#proxyElement
과 함께 사용하면 사용자가 PageObjects를 쉽고 빠르게 만들 수 있습니다. 당신이PageObject
패턴을 사용하는 경우
그래서, 당신은 클래스 멤버에이 주석을 추가하고 (PageFactory.initElements()
호출하면) WebDriver
자동으로 개체 초기화 중에 적절한 WebElement
의 주입.
더 많은 예제를 보려면이 링크를 읽고 PageObject
pattern and @FindBy
annotations usage을 읽어 보시기 바랍니다.
것이 아니라 객체에 의해로 로케이터를 저장하는 것이 더 유용 WebElements보다 유연하며 StaleElementException을 피하는 경향이 있습니다. 대신
@FindBy(id = "idOfYourElement")
WebElement myLocator;
당신은 또한 요소의 부재를 주장 할 때 로케이터를 사용하거나 ExpectedConditions 도우미에서 사용할 수있는이 방법의
By myLocator = By.id("idOfYourElement")
.
왜 Bytes 객체 대신 @FindBy를 사용하는지 이해하는 데 많은 어려움을 겪고 있습니다. – stuart
@elroso 주석을 제거 할 때 PageFactory.initElements (driver, page) 메서드를 사용할 수 있습니까? 감사합니다. –
@FindBy 대신 By를 사용하는 것에 대한 좋은 설명. 감사 :) –
또한 Pagefactory을 사용하고, 같은 것을 가질 수 있습니다. 방법에 관해서는,
@FindBy(how = How.NAME, using = "logonName")
private WebElement logonNameField;
@FindBy(how = How.NAME, using = "password")
private WebElement passwordField;
지금을, 당신은 할 수 있습니다 :
- CLASS_NAME
- CSS
- ID
- ID_OR_NAME
- LINK_TEXT
- NAME
- PARTIAL_LINK_TEXT
- TAG_NAME
- XPATH
- 클래스
또는 당신은 WebDriver의 API 이외의 것이 자신의 DOM 검색 플러스 XPath는, 사용할 수 있지만 작동합니다.
답변 해 주셔서 감사합니다. 그래서, 나는 또 다른 질문이 있습니다 ... 그것은 동적으로 요소를 변경하는 요소에 사용됩니까? – mra419
@ user1163375 '로케이터를 동적으로 변경하는 중'이라고 말하면 무엇을 의미합니까? –
내 이해가 "@FindBy"어노테이션은 요소 ID가 웹 응용 프로그램에서 동적으로 변경 될 때 사용됩니다 .... 잘못된 경우 수정하십시오. – mra419