2011-05-27 46 views
1

點擊一個鏈接會觸發一個創建新元素的操作。但是,點擊返回後調用driver.findElement(By.id(""))找不到它。selenium2 webdriver找不到javascript新創建的元素

我已經嘗試了下面的代碼來等待元素出現。

wait.until(new ExpectedCondition() 
{ 
    public Boolean apply(WebDriver webDriver) { 
    System.out.println("Searching ..."); 
    return webDriver.findElement(By.id("itemType1")) != null; 
        } 
});

但我仍然無法找到它,直到超時。

+0

難道是可能的調用findElement發生實際上添加的元素之前?是否等待幾次,或只調用一次「應用」功能? – phtrivier 2011-06-09 12:11:40

回答

0

你也許可以使用element.isDisplayed()

Så做這樣的:

WebElement jrnrText = driver.findElement(By.id("id")) 
if(jrnrText.isDisplayed()){ 
    wait.until(presenceOfElementLocated(BY.id]("id"))) 
} 

Function<WebDriver, WebElement> presenceOfElementLocated(final By locator) { 
    return new Function<WebDriver, WebElement>() { 
     public WebElement apply(WebDriver driver) { 
      return driver.findElement(locator) 
     } 
    } 
}