【问题标题】:Change Seleniums default TimeoutException更改 Seleniums 默认 TimeoutException
【发布时间】:2020-12-03 10:11:31
【问题描述】:

在我的测试中,通过css selector 定位的一些元素需要很长时间才能出现,因为服务器非常慢。我在通过 jenkins 运行测试时经常遇到此错误,但在 eclipse 上本地却没有。

> org.openqa.selenium.TimeoutException: Expected condition failed:
> waiting for visibility of element located by By.cssSelector:
> #ctl00_ContentPlaceHolder1_uctlSettingUpPaymentCollectionGrid1_gvGroup_ctl02_deleteGroup
> (tried for 10 second(s) with 500 milliseconds interval)

是否可以在 selenium 上将此时间增加到 10 秒以上?

【问题讨论】:

  • 你可以参考这个stackoverflow post。在这里您可以将更改时间从 10 设置为您的选择。

标签: java selenium jenkins automation webdriver


【解决方案1】:

尝试隐式等待 - docs here

还有第二种不同于显式等待的等待 称为隐式等待。通过隐式等待,WebDriver 轮询 DOM 尝试查找任何元素时持续一段时间。这可以是 当网页上的某些元素不可用时很有用 立即加载,需要一些时间来加载。

您为您的驱动程序设置一次,这是一个动态等待,直到您指定的超时。

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

或者,您可以为每个需要它的元素使用explicit waits

new WebDriverWait(driver, Duration.ofSeconds(30)).until(ExpectedConditions.elementToBeClickable(<<Your-Identifier>>));

通过显式等待,您可以确保某些 ExpectedCondition 已准备就绪,并且您可以控制要与之同步的元素的超时时间。

Java 的预期条件列表为here

如果可能,一般建议您选择方法:

警告:不要混合隐式和显式等待。这样做会导致 不可预知的等待时间。例如,将隐式等待设置为 10 秒和 15 秒的显式等待可能会导致超时 20 秒后发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多