我有一个测试用例,其中我有超过30个步骤,在我使应用程序等待一段时间(60秒)加载页面中的所有元素的所有步骤中,因为它需要更多时间执行。
在这里,我需要你们帮助进行微调。
答案 0 :(得分:1)
使用Selenium有多种方法可以实现等待。
<强> Thread.sleep代码强>
Thread.Sleep是一个静态等待,它不是在脚本中使用的好方法,因为它是无条件睡眠。
Thread.Sleep(2000); // this will wait for 2000 milliseconds
明确等待
显式等待在继续之前等待某个条件发生。例如,当我们想要在向其中触发操作之前检查元素的可见性时,可以使用它。
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
WebElement DynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("DynamicElement")));
隐含等待
如果WebDriver因其不可用而无法立即找到对象,则会使用隐式等待。 WebDriver将等待指定的隐式等待时间,并且不会尝试在指定的时间段内再次找到该元素。
一旦超过指定的时间限制,webDriver将再次尝试再次搜索该元素。成功后,继续执行;失败后,它会抛出异常。
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://google.com");
WebElement DynamicElement = driver.findElement(By.id("DynamicElement"));
流利等待
FluentWait实例定义了等待条件发生的最长时间,以及检查对象条件是否存在的频率。
Wait wait = new FluentWait(driver).withTimeout(60, SECONDS).pollingEvery(10, SECONDS) .ignoring(NoSuchElementException.class);
WebElement dynamicelement = wait.until(new Function<webdriver,webElement>(){
public WebElement apply(WebDriver driver){
return driver.findElement(By.id("dynamicelement"));
}
});
您可以根据自己的情况使用任何方法。