【问题标题】:Why does HtmlUnitDriver fail randomly (FirefoxDriver/ChromeDriver works)?为什么 HtmlUnitDriver 随机失败(FirefoxDriver/ChromeDriver 有效)?
【发布时间】:2016-06-07 16:41:08
【问题描述】:

我有一个 2 分钟的 Selenium webdriver 脚本。它与 FirefoxDriverChromeDriver 配合得很好。真正的浏览器永远不会失败。

但是当我使用 HTMLUnit 驱动程序运行时,我发现它随机失败。抛出异常,例如找不到元素。

我尝试过的解决方案:

  1. 将 Thread.sleep 添加到 6000 毫秒。但仍然不是每次都运行
  2. 添加等待,但在同一行抛出错误
  3. 将元素的定位器从 Id 更改为 xpath 或 CSS 路径。

配置和版本:

硒java:2.53.0

硒服务器:2.53.0

htmlunit-driver : 2.21

测试NG:6.8.8

【问题讨论】:

  • HtmlUnitDriver 有一个非常不同的实现(它并不真正使用其他浏览器)。因此,它受到更多限制,并且通常会更频繁地失败。

标签: java selenium-webdriver automation htmlunit-driver


【解决方案1】:

添加显式等待WebDriver抛出无法找到元素异常的元素,如下所示 -

WebDriverWait wait = new WeBDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("")));

另外,请确保您已将以下依赖项添加到您的项目中 -

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>htmlunit-driver</artifactId>
<version>2.21</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>2.53.0</version>
</dependency>

【讨论】:

  • 我已经添加了 30 秒的等待时间,但仍然发现此错误。项目已更新库。我还包括了这两个依赖项。
  • 你能提供更多关于 selenium-support 的细节吗?
  • 根据 HtmlUnitDriver 的官方页面需要硒支持 - github.com/SeleniumHQ/htmlunit-driver
  • 如果您能分享您的脚本和相关的必要细节以便尝试重现它,那就太好了。
  • 我不能因为一些政策。但我可以肯定地说我已经尝试了上述解决方案,但仍然无法获得完美的结果。
猜你喜欢
  • 1970-01-01
  • 2021-12-10
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 2011-07-22
相关资源
最近更新 更多