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

使用C#代码的Selenium执行测试用例所花费的时间比预期的要多,c#,selenium,time,testcase,C#,Selenium,Time,Testcase,我有一个测试用例,其中我有30多个步骤,在所有步骤中,我让应用程序等待一段时间(60秒)来加载页面中的所有元素,因为它需要更多的时间来执行 在这里,我需要你们帮助进行微调。使用Selenium实现等待有多种方法 线程。睡眠 睡眠是一种静态等待,在脚本中使用它不是一种好方法,因为它是无条件睡眠 Thread.Sleep(2000); // this will wait for 2000 milliseconds Wait wait = new FluentWait(driver).withTim

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


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

使用Selenium实现等待有多种方法

线程。睡眠

睡眠是一种静态等待,在脚本中使用它不是一种好方法,因为它是无条件睡眠

Thread.Sleep(2000); // this will wait for 2000 milliseconds
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"));
  }

});
显式等待

显式等待等待特定条件发生后再继续。例如,当我们想在向元素触发操作之前检查元素的可见性时,可以使用它

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实例定义等待条件发生的最长时间,以及检查对象条件是否存在的频率

Thread.Sleep(2000); // this will wait for 2000 milliseconds
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"));
  }

});
Wait Wait=new FluentWait(驱动程序)。带超时(60秒)。每隔(10秒)轮询一次。忽略(NoSuchElementException.class);
WebElement dynamicelement=wait.until(新函数(){
公共WebElement应用(WebDriver){
返回driver.findElement(By.id(“dynamicelement”);
}
});

您可以使用适合您的情况的任何方法。

那么问题出在哪里?如果您每次等待60秒,当然需要更多的执行时间。在selenium中有两种使用等待的方法,您使用哪种方法以及如何使用?您不需要在每个步骤后等待,也绝对不应该每次等待60秒。我不知道如果您没有向我们展示任何代码,我们应该如何帮助您。在每个步骤中,我们都调用隐式等待函数来等待页面加载。例如,我们调用了函数名refereimplicitwait(),在每个步骤中我们都调用refereimplicitwait()函数。