FirefoxDriver webdriver.load.strategy 不稳定 findelements 从错误页面获取元素

2023-12-11

我在一个应用程序中使用 FirefoxDriver,该应用程序可以快速浏览几个相似但不相同的页面。为了加快执行速度(我需要使用 FF),我将 webdriver.load.strategy 属性设置为“不稳定”。这确实通过不完全加载页面来加快速度,但我发现了一个非常奇怪的错误。

在检查包含页面列表及其数据的文件时,我发现某些页面与错误的数据匹配。当我调试时,单步执行时一切正常,但是一旦我让程序运行几页,它就开始再次从错误的页面获取数据。 (澄清一下,例如如果我做了driver.get(www.google.com), 其次是driver.get(www.stackoverflow.com),然后做driver.findElements()获取 StackOverflow 页面标题,它将返回“Google”。)

当仔细观察浏览器运行时,我发现网址框中的网址与实际显示的页面不匹配。网址的变化速度比页面的变化速度快得多。我怀疑发生的情况是驱动程序没有等到页面完全加载后再调用 findElements,因此从前一页获取具有相同类名的元素。

考虑到 webdriver.load.strategy 'stable' 应该做的事情,这是有道理的,但我在页面上的元素上设置了等待,但它似乎没有等待。难道是因为每个页面都有相同的元素,所以该元素已经可见了?我不能等待其他任何事情,因为所有页面都有相同的设置 - 只是个别文本不同,而且我事先不知道会是什么。

有人遇到过这个问题吗?我对导致问题的原因的假设是否正确?除了删除不稳定的负载策略之外,我还能做些什么吗?

谢谢, BSGEDIT我正在添加一些代码,即使在未设置 webdriver.load.strategy 'stable' 时代码也可以完美运行。

for(String url : urllist)
{
  driver.get(url);
  WebElement header = (new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.tagName("h1")));
  elements = driver.findElements(By.className(elementclassname));
}

请注意,每个页面上都有一个 h1 和几个带有 class=element classname 的元素。


我怀疑发生的情况是驱动程序没有等到页面完全加载后再调用 findElements,因此从前一页获取具有相同类名的元素。

我认为你的假设是正确的。

里面写的也差不多的描述unstable战略:

有一个测试功能可以使 Firefox 在调用 .get 或 .click 后不等待整个页面加载。这可能会导致立即查找中断,因此请务必使用隐式或显式等待。

作为(不太好看)的解决方法,您可以参考driver到不包含该元素的页面presenceOfElementLocated()(例如,空白页)。

就像是:

for(String url : urllist)
{
  driver.get(url);
  WebElement header = (new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.tagName("h1")));
  elements = driver.findElements(By.className(elementclassname));
  driver.get("about:blank"); // <<<<<<<<<<
}

所以,当driver到达一个新的url,将会有一个空白页面,并且需要等待元素出现在页面上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FirefoxDriver webdriver.load.strategy 不稳定 findelements 从错误页面获取元素 的相关文章

随机推荐

  • AngularJS - 初始化日期输入

    我有一个应用程序 其中有几个日期字段需要接受来自用户和数据库的值 I found this解决方案 但仍然收到错误消息 错误 ngModel datefmt http errors angularjs org 1 5 8 ngModel d
  • 调试 u-sql 作业

    我想知道是否有任何提示和技巧来查找数据湖分析工作中的错误 大多数时候错误消息似乎不是很详细 当尝试从 CSV 文件中提取时 我经常收到这样的错误 顶点故障触发作业快速中止 顶点失败 SV1 Extract 0 且 gt 错误 顶点用户代码错
  • 使用 8 张图像在 UIImageView 周围创建边框

    I have 8 images I made 4 images for each of the corners and 4 images for each of the sides of UIImageView Now how on Ear
  • 在 Spring 中创建临时 JMS jms 主题

    我正在尝试重构一些遗留代码以使用 Spring 处理与大型机服务的 jms 连接 我需要连接为大型机服务回复创建一个临时主题并将其设置为message setJMSReplyTo replyTo 在我发送消息之前的消息中 谁能提供这方面的例
  • Logstash 中需要 #、输入、过滤器、输出之一

    我试图通过简单地执行文档中给出的命令来回显所输入的内容来使 Logstash 安装工作 但这给了我以下错误 我的命令 C logstash 1 4 0 bin gt logstash bat agent e input stdin outp
  • 如何使用 Laravel 的 Paginate() 输出当前迭代?

    Laravel 5 2 应用程序 我的控制器中有一个函数 它使用 order by 子句查询我的数据库 然后我对其进行分页 public function foo results DB orderBy name desc gt pagina
  • 如何确保 Node.js 在 MongoDB 连接断开后继续运行?

    我在 Express 中有一个错误处理中间件 它尝试捕获所有传入的错误 app use function err req res next console error err stack res status 500 res render
  • 将图像从 azure blob 存储转换为 Base64?

    我正在尝试将图像从 Azure blob 存储转换为 base64 private static string FromAzureToBase64 string azureUri Uri blobUri new Uri azureUri C
  • 将 R 县地图叠加到州地图上

    R新手在这里 如果我第一次使用map state 我该如何使用map county ylim xlim 但像这样抵消它 现在 我正在使用 imagemagickcomposite gravity southwest 合并 2 个 PNG 文
  • 如何在 Vim 中为命令创建别名?

    Vim 是我编程时首选的文本编辑器 因此我总是遇到一个特别烦人的问题 通常 当我快速需要保存缓冲区并继续执行其他杂项任务时 我会执行典型的操作 w 然而 我总是 似乎超过 50 的时间 设法利用这一点 w 很自然地 Vim 对我大喊大叫 因
  • 带边框的纯 css 树

    我正在尝试用纯 CSS 创建一棵带有缩进的树 我一直在尝试使用类似的东西 ul tree ul padding left 5px 但是我想在列表中的每个项目之间进行分隔 如果我使用上面的代码 分隔栏也会缩进 所以它不太好 这是我当前的代码
  • 带切换功能的 SwiftUI onDelete 列表

    这是我对这个问题的第三个问题 到目前为止还没有不崩溃的解决方案 我想用切换来滑动删除列表 我的 简化的 代码如下所示 struct Item Identifiable var id UUID var isOn Bool struct Con
  • Windows C 运行时 _close(fd) 未关闭文件

    我们在使用 C 和 C 混合编写的 Windows 应用程序进行生产时遇到问题 其中 MoveFileEx 偶尔会报告 该进程无法访问该文件 因为该文件正在被另一个进程使用 这个问题很少见 但最近我们已经能够在我们的开发环境中重现该问题 发
  • 如何在 JavaScript 中重新定义数组上的 + 运算符?

    假设点是使用 JavaScript 表示的Array as x y 我如何定义 点上的运算符 1 2 5 10 6 12 JavaScript 没有覆盖内置算术运算符的功能 您可以通过覆盖一些有限的技巧来实现 valueOf and toS
  • 如何使用 Java 将 BsonDocument 对象写入文件并再次读取它

    我想将 BsonDocument 输出到文件系统 而不是 mongodb 然后使用 java 再次读取它 但目前的BasicBSONencoder仅支持旧版本的BSONObject 如何将BsonDocument编码为二进制 或者有什么方法
  • 如何在整个子查询上使用 group_concat?

    无需进行不必要的比较 我想获得一系列行的 md5 哈希值 由于带宽限制 我希望它发生在服务器端 这有效 create table some table id int auto increment col1 varchar 1 col2 in
  • 如何删除数据框列的标题

    我想出了一个像这样的数据框 我想知道我们如何更改或删除 id 和 date 因为它们只是索引和列的名称 id col1 col2 clo3 date 2000 01 03 55 500000 NaN NaN 2000 01 04 52 81
  • 使用 ImageMagick 将 PDF 转换为 PNG 或 JPEG 非常非常慢

    我有一个使用 PHP 和 ImageMagick 的 PDF 到 PNG 转换脚本 但我遇到了转换速度问题 我知道它是有效的 因为对于非常小的 PDF 转换所需的时间并不是那么长 但是对于 250kb 文件 实际上仍然不是那么大 转换需要超
  • 如何控制winform mschart图例文本对齐c#?

    如何设置图表图例对象中的文本对齐方式 我尝试过使用 myChartName Legends mySeriesName Alignment stringAlignment Near 没有效果 我还尝试创建自定义图例项目 同样没有效果 文本始终
  • FirefoxDriver webdriver.load.strategy 不稳定 findelements 从错误页面获取元素

    我在一个应用程序中使用 FirefoxDriver 该应用程序可以快速浏览几个相似但不相同的页面 为了加快执行速度 我需要使用 FF 我将 webdriver load strategy 属性设置为 不稳定 这确实通过不完全加载页面来加快速