Selenium使用C#代码执行测试用例所花费的时间比预期的要长
本文关键字:时间 使用 代码 执行 测试用例 Selenium | 更新日期: 2023-09-27 18:20:33
我有一个测试用例,其中我有30多个步骤,在所有步骤中,我让应用程序等待一段时间(60秒)来加载页面中的所有元素,因为执行需要更多的时间。
在这里,我需要你们帮忙进行微调。
Selenium有多种方法可以实现等待。
线程.睡眠
线程。睡眠是一种静态等待,它不是在脚本中使用的好方法,因为它是无条件睡眠。
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"));
}
});
你可以使用任何适合你情况的方法。