【发布时间】:2021-08-16 16:04:46
【问题描述】:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
是否可以将 '10' 设置为变量,以便动态更改?如果可能怎么办?谢谢!
【问题讨论】:
标签: java selenium groovy keyword katalon
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
是否可以将 '10' 设置为变量,以便动态更改?如果可能怎么办?谢谢!
【问题讨论】:
标签: java selenium groovy keyword katalon
隐式等待是告诉 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不会有任何影响。
【讨论】:
keyword 并将 value 更改为 180 时,它没有任何效果。谢谢
public class ImplicitWait { public static WebDriver driver; int timeInSeconds = 0; @Keyword public void implicitWait(int timeInSeconds) { // Get active window driver = DriverFactory.getWebDriver(); //Specify implicit wait of 2 minutes driver.manage().timeouts().implicitlyWait(timeInSeconds, TimeUnit.SECONDS); } } >这是我的代码,我在我的测试用例中添加了这个作为自定义关键字并将输入值更改为 180 并且没有等待 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);
}
但是不建议使用隐式等待,应该使用显式等待。
此外,如果您仍想隐式定义等待,通常每个驱动程序实例定义一次,即整个测试生命周期。
【讨论】:
(WebDriver driver) 时,我都会收到一条错误消息
(int duration),但它仍然不起作用,我不知道为什么。抱歉,这是我第一次使用katalon。