更改硒默认TimeoutException

问题描述

在我的测试中,由于服务器非常慢,通过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)

是否可以将硒的使用时间增加到10秒以上?

解决方法

尝试隐式等待-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>>));

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

Java的预期条件列表为here

通常建议您尽可能选择以下方法:

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