1
페이지 객체 필드에서 명시 적 대기를 사용하는 방법은 무엇입니까? 필드를 선언하고 FindBy 태그를 사용하여 인스턴스를 생성하는 pageobject 클래스가 있습니다. 어떻게 선언 된 필드 중 일부 또는 전부에 대한 명시적인 대기를 추가 할 수 있습니까?selenium webdriver의 pageobject 필드에서 명시 적 대기를 사용하는 방법?
페이지 객체 필드에서 명시 적 대기를 사용하는 방법은 무엇입니까? 필드를 선언하고 FindBy 태그를 사용하여 인스턴스를 생성하는 pageobject 클래스가 있습니다. 어떻게 선언 된 필드 중 일부 또는 전부에 대한 명시적인 대기를 추가 할 수 있습니까?selenium webdriver의 pageobject 필드에서 명시 적 대기를 사용하는 방법?
해결 방법은 @FindBy를 사용하지 않는 것입니다. 페이지 객체에서
:
By someElementLocator = By.cssSelector(".locator");
public void waitForElementPresent(final By locator, int timeout) {
ExpectedCondition e = new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return driver.findElements(locator).size() > 0;
}
};
WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.until(e);
}
public WebElement getSomeElement() {
waitForElementPresent(someElementLocator);
return driver.findElement(locator);
}
은 아마 건축 문제입니다. @FindBy 지원이 기다리는 것을 확인하는 리소스를 찾지 못하는 것 같아서 그 사용법이 테스트 디자인/아키텍처에 달려 있습니다.