2013-12-19 2 views
0

에서 메서드가 반환 될 때까지 나는 셀레늄 새로운 그리고 난 완료하는 데 약간의 시간이 소요될 수있는이기다립니다 셀레늄

public Test login(String username,String password) 
{ 
    accountName.sendKeys(username); 
    passwordField.sendKeys(password); 

    signInButton.click(); 
    return PageFactory.initElements(driver,Test.class); 
} 

로그인과 같은 방법에있다. login 메서드가 다른 메서드 호출보다 먼저 반환 될 때까지 기다려 주시기 바랍니다. 이것을 할 셀레늄에 어떤 방법이 있습니까?

답변

1

이 문제를 해결할 수있는 몇 가지 옵션이 있습니다. 난 당신이 유창 대기를 추가 추천 할 것입니다 : 요소가이 예제에서는 단지 두 번째 페이지에서 발견되는 요소가 될 것이라고 존재하는이 대기

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver) 
     .withTimeout(30, SECONDS) 
     .pollingEvery(1, SECONDS) 
     .ignoring(NoSuchElementException.class); 

    WebElement foo = wait.until(new Function<WebDriver, WebElement>() { 
    public WebElement apply(WebDriver driver) { 
     return driver.findElement(By.id("foo")); 
    } 
    }); 

. 시간 초과 기간 후에 발견되지 않으면 오류가 발생합니다.

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
:

다른 옵션은 같은, 항상 긴 시간을 기다릴 수 있도록 webdriver 암시 대기 시간을 증가시키는 것이다