在Selenium Java中,如何在等待时间到期之前找到元素?

时间:2018-07-12 12:46:29

标签: java selenium

当我搜索术语时,有时会立即显示搜索结果。我等待它等待10秒以单击该元素,即使在该结果之前找到它也是如此。

如何在显示搜索结果后立即单击元素?

2 个答案:

答案 0 :(得分:1)

您可以使用此:

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.elementToBeClickable(By.id<locator>));

示例可能是这样的:

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.id("elementId")));

此代码将等到元素可单击至少10秒钟。您可以在文档here中获得更多信息。

根据您的解释,您可以这样做:

List<WebElement> listSearchResults = new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfAllElementsLocatedBy((By.xpath(""))));
if(listSearchResults.size() > 1){
  new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(listSearchResults.get(listSearchResults.size()-1))).click();
}

答案 1 :(得分:0)

您可以使用:

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("your selector")));

它将等待元素的可见性,一旦可见,您就可以单击它。 即

driver.findElement(By.xpath("your selector")).click();

希望对您有帮助:)