driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
是否可以将 '10' 设置为变量,以便动态更改它?如果可能怎么办?谢谢!
隐式等待是告诉 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
所以一次又一次地调用不会有任何影响。
看看官方文档怎么说
如果您正在寻找一种将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);
}
但是不建议使用隐式等待,应该使用显式等待。
此外,如果您仍想隐式定义等待,通常每个驱动程序实例定义一次,即整个测试生命周期。