使用C#代码的Selenium花费了比预期更多的时间来执行测试用例

时间:2015-11-04 10:26:13

标签: c# selenium time testcase

我有一个测试用例,其中我有超过30个步骤,在我使应用程序等待一段时间(60秒)加载页面中的所有元素的所有步骤中,因为它需要更多时间执行。

在这里,我需要你们帮助进行微调。

1 个答案:

答案 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"));
  }

});

您可以根据自己的情况使用任何方法。