Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法找出selenium中的隐式等待时间设置为多少?_C#_Selenium_Selenium Webdriver - Fatal编程技术网

C# 有没有办法找出selenium中的隐式等待时间设置为多少?

C# 有没有办法找出selenium中的隐式等待时间设置为多少?,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,显然,我可以设置等待时间。有没有办法找出selenium中的隐式等待时间设置为多少?(具体而言) (其思想是禁用隐式等待,执行某些操作,然后将其重置为之前的任何时间。)如在docs()中所示: “隐式等待是告诉WebDriver在尝试查找一个或多个元素时轮询DOM一段时间,如果它们不立即可用。默认设置为0。一旦设置,隐式等待将在WebDriver对象实例的生命周期内设置。”如果使用页面对象模式,将隐式等待时间保留在PageBase类的字段中,此外,您希望创建一些方法来重置或检索该值 很抱歉,以下

显然,我可以设置等待时间。有没有办法找出selenium中的隐式等待时间设置为多少?(具体而言)

(其思想是禁用隐式等待,执行某些操作,然后将其重置为之前的任何时间。)

如在docs()中所示:


“隐式等待是告诉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