Java Selenium中的等待和超时

Selenium 中的等待命令是什么?

在执行 selenium 自动化测试时,我们使用等待来使我们的测试可靠且健壮。最常见的是,在运行自动化测试时,如果在加载 Webdriver 想要交互的特定元素时出现延迟,我们会看到“ElementNotVisibleException”。

等待和超时可帮助用户在执行某些操作或在应用程序中的不同页面之间导航后在页面上加载元素时克服各种问题。

Selenium 4 中的隐式等待

让我们看看升级到 Selenium 4 后如何定义隐式等待。

在 Selenium 4 之前 -

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

现在将其视为已弃用

@Deprecated 
WebDriver.Timeouts implicitlyWait(long time, TimeUnit unit);

在Selenium 4 之后 -

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

与scriptTimeout和pageLoadTimeout等其他等待相同:-

driver.manage().timeouts().scriptTimeout(Duration.ofMinutes(2));
driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));

Selenium 4 中的显式等待

WebDriverWait 现在也期待“持续时间”而不是长时间的超时,以秒和毫秒为单位。

该方法现在在 selenium 中已弃用

public WebDriverWait(@NotNull org.openqa.selenium.WebDriver driver, long timeoutInSeconds)

在 Selenium 4 之前 -

 //Old syntax
WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".classlocator")));

在 Selenium 4 之后 -

//Selenium 4 syntax
WebDriverWait wait = new WebDriverWait(driver,Duration.ofSeconds(10));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".classlocator")));

Selenium 4 中的 FluentWait

在 Selenium 4 之前 -

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
  .withTimeout(30, TimeUnit.SECONDS)
  .pollingEvery(5, TimeUnit.SECONDS)
  .ignoring(NoSuchElementException.class);

在 Selenium 4 之后 -

 Wait<WebDriver> fluentWait = new FluentWait<WebDriver>(driver)
        .withTimeout(Duration.ofSeconds(30))
        .pollingEvery(Duration.ofSeconds(5))
        .ignoring(NoSuchElementException.class);
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值