使用Selenium等待元素加载



我已经仔细查看了这里,但是web元素等待似乎不适合我的代码。

我对Java和Selenium相当陌生。我想尝试在超时之前将等待元素放入我的代码中。

有什么建议吗?

当它到达这个点时,它会崩溃,因为页面需要一段时间来搜索这个地址。

@Step ("Verifying landmark")
public void validatingLandmark(String s){
    String actualValue = getDriver().findElement(By.id("MainContent_lblLandmarkUPRN")).getText();
    assertEquals(s, actualValue);
    TimeOut();
}

您需要使用WebDriverWait。例如,显式地等待一个元素变为可见:

WebDriverWait wait = new WebDriverWait(getDriver(), timeOut);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("MainContent_lblLandmarkUPRN")));
String actualValue = element.getText();

您也可以使用textToBePresentInElement期望条件:

WebElement element = wait.until(ExpectedConditions.textToBePresentInElement(By.id("MainContent_lblLandmarkUPRN"), s));

您可以使用Explicit wait或Fluent wait

显式等待示例-

WebDriverWait wait = new WebDriverWait(WebDriverRefrence,20);
WebElement aboutMe;
aboutMe= wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("about_me"))); 

流畅等待示例-

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)                            
.withTimeout(20, TimeUnit.SECONDS)          
.pollingEvery(5, TimeUnit.SECONDS)          
.ignoring(NoSuchElementException.class);    
  WebElement aboutMe= wait.until(new Function<WebDriver, WebElement>() {       
public WebElement apply(WebDriver driver) { 
return driver.findElement(By.id("about_me"));     
 }  
});  

查看本教程了解更多细节

您可以在这里使用隐式等待或休眠

含蓄等:driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

睡眠

Thread.sleep(2000L);在这种情况下,use抛出InterruptedException

希望对大家有所帮助

相关内容

  • 没有找到相关文章

最新更新