可以使用您的WebDriverWait參考創建一個自定義函數來協助此過程。
提供的代碼示例是未經測試
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.ignoring(NoSuchElementException.class);
final String testName = "";
final WebElement wsearchlist = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("")));
WebElement wsearch = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver input) {
By by = new By.ByLinkText(testName);
WebElement search = null;
search = wsearchlist.findElement(by);
return search;
}});
//Continue on.
如果wait.ignoring
電話不會在NoSuchElementException
工作,然後添加一個try/catch塊到功能
WebDriverWait wait = new WebDriverWait(driver, 10);
//wait.ignoring(NoSuchElementException.class);
final String testName = "";
final WebElement wsearchlist = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("")));
WebElement wsearch = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver input) {
By by = new By.ByLinkText(testName);
WebElement search = null;
try {
search = wsearchlist.findElement(by);
} catch (NoSuchElementException nsee) {
nsee.printStackTrace();
//FIXME: LOG THIS
}
return search;
}});
//Continue on.
我用這個cunstruction完全可以得到元素。在JS添加內容的情況下,所以應該等待它。我沒有元素只是由.. –
@YevgenKulik然後,你應該使用'presenceOfNestedElementLocatedBy' .. ..查看更新的答案 –