C# 有没有办法找出selenium中的隐式等待时间设置为多少?
显然,我可以设置等待时间。有没有办法找出selenium中的隐式等待时间设置为多少?(具体而言) (其思想是禁用隐式等待,执行某些操作,然后将其重置为之前的任何时间。)如在docs()中所示:C# 有没有办法找出selenium中的隐式等待时间设置为多少?,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,显然,我可以设置等待时间。有没有办法找出selenium中的隐式等待时间设置为多少?(具体而言) (其思想是禁用隐式等待,执行某些操作,然后将其重置为之前的任何时间。)如在docs()中所示: “隐式等待是告诉WebDriver在尝试查找一个或多个元素时轮询DOM一段时间,如果它们不立即可用。默认设置为0。一旦设置,隐式等待将在WebDriver对象实例的生命周期内设置。”如果使用页面对象模式,将隐式等待时间保留在PageBase类的字段中,此外,您希望创建一些方法来重置或检索该值 很抱歉,以下
“隐式等待是告诉WebDriver在尝试查找一个或多个元素时轮询DOM一段时间,如果它们不立即可用。默认设置为0。一旦设置,隐式等待将在WebDriver对象实例的生命周期内设置。”如果使用页面对象模式,将隐式等待时间保留在PageBase类的字段中,此外,您希望创建一些方法来重置或检索该值 很抱歉,以下示例是用Java编写的:
class PageBase {
private WebDriver driver;
private long implicitlyWaitTimeInSeconds;
public PageBase(WebDriver driver, long timeout) {
driver.manage().timeouts().implicitlyWait(timeout, TimeUnit.SECONDS);
implicitlyWaitTimeInSeconds = timeout;
this.driver = driver;
}
public void setImplicitlyWaitTime(long timeout) {
driver.manage().timeouts().implicitlyWait(timeout, TimeUnit.SECONDS);
implicitlyWaitTimeInSeconds = timeout;
}
public long getImplicitlyWaitTime() {
return implicitlyWaitTimeInSeconds;
}
...
}
class HomePage extends PageBase {
...
}
这可以用Java打印实际超时值(加上计算时间,通常在100ms内),但思路很清楚:
public void getCurrentWaitTimeout() {
long milliseconds = java.time.ZonedDateTime.now().toInstant().toEpochMilli();
driver.findElements(By.cssSelector(".nonExistingElement"));
milliseconds = java.time.ZonedDateTime.now().toInstant().toEpochMilli() - milliseconds;
log.info("Current waiting timeout is {} milliseconds", milliseconds);
}
因此,您可以始终调用这样的方法,以确保您知道实际超时,而不是您试图设置的值。Selenium中似乎没有API端点来获取其值,而只是设置其值。最好的办法是事先将其值存储在局部变量中。或者选择自己的默认值作为常量,并在初始化selenium时进行设置。这并不能回答他的问题。默认设置可能为0,但他在整个测试过程中使用可能不同的值对其进行操作。他需要跟踪这些值。这是不是:“一旦设置,隐式等待就设置为WebDriver对象实例的生命周期。”这个问题的答案是什么?为什么?无论何时设置,它都是为实例的生命周期设置的。但这并不能阻止我将其设置为另一个值,该值在实例的生命周期内使用。“一旦设置”意味着设置该值的人知道该值,他可以使用该值进行操作。如果他没有设置,他现在知道值是零。如果我们使用面向对象编程模型,知道其他方法可能设置了值是无关紧要的,并且可能会发生变化。与其强迫方法的调用方提供隐式等待时间,我希望能够发现它,了解它的值,而不是调用方期望的值。不要忘记在Setter中添加
implicitlyWaitTimeInSeconds=timeout
!