-2

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

是否可以将 '10' 设置为变量,以便动态更改它?如果可能怎么办?谢谢!

4

2 回答 2

0

隐式等待是告诉 WebDriver 在尝试查找一个或多个元素(如果它们不是立即可用)时轮询 DOM 一段时间。默认设置为 0,表示禁用。设置后,会在会话的生命周期内设置隐式等待。

它设置为 webdriver 会话的生命周期。

提出您的问题是否可以将“10”设置为变量?

是的,这是可能的。

int a = 10;

driver.manage().timeouts().implicitlyWait(a, TimeUnit.SECONDS);

如果您有这样的静态驱动程序引用,请将这一行包装在一个方法中并传递 int args:

public void wdImplicitWait(int duration){
    driver.manage().timeouts().implicitlyWait(duration, TimeUnit.SECONDS);
}

像这样称呼它:

wdImplicitWait(5);
some web element interaction like click or sendkeys here
wdImplicitWait(3)

如果您的驱动程序不是静态的,请确保传递驱动程序实例引用

public void wdImplicitWait(int duration, WebDriver driver){
        driver.manage().timeouts().implicitlyWait(duration, TimeUnit.SECONDS);
    }

但是不会有任何影响,因为它是为webdriver特定执行设置的整个生命周期。

implicitlyWait所以一次又一次地调用不会有任何影响。

看看官方文档怎么说

于 2021-05-28T11:58:49.017 回答
0

如果您正在寻找一种将implicitlyWait相应地设置为通过的持续时间的方法,则可以按以下方式完成:

public void setImplicitlyWait(Webdriver driver, int duration){
    driver.manage().timeouts().implicitlyWait(duration, TimeUnit.SECONDS);
}

根据您的实际项目结构,您可能只需要传递持续时间,它会是这样的:

public void setImplicitlyWait(int duration){
    driver.manage().timeouts().implicitlyWait(duration, TimeUnit.SECONDS);
}

但是不建议使用隐式等待,应该使用显式等待。
此外,如果您仍想隐式定义等待,通常每个驱动程序实例定义一次,即整个测试生命周期。

于 2021-05-28T12:04:21.867 回答