如何在隐式等待中将秒设置为变量



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

是否可以将"10"设置为变量,以便动态访问它?如果可能,如何?非常感谢。

一个隐含的等待是告诉WebDriver轮询DOM尝试查找一个或多个元素时的时间量无法立即获得。默认设置为0,表示已禁用。一旦设置好,就为会话的生命周期设置隐式等待。

它是为网络驱动程序会话的生命周期设置的。

说到你的问题,是否可以将"10"设置为变量?

是的,这是可能的。

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

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

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的整个生命周期设置的。

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

查看官方文档中的内容

如果您正在寻找一种根据经过的持续时间设置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);
}

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

最新更新