gpt4 book ai didi

selenium - 如何在 selenium 中自动更新 chromeDriver 和 geckDriver

转载 作者:行者123 更新时间:2023-12-03 16:56:09 25 4
gpt4 key购买 nike

我有多个节点机器的 selenium 网格设置,其中我在所有 selenium 节点机器上手动下载 chromeDriver 和 geckoDriver 并分别将它们用于 chrome 和 firefox 浏览器。

现在这里 chrome 和 firefox 浏览器(在所有 selenium 节点机器上)设置为“自动更新”(这是必需的,因为我希望我的应用程序始终在最新的浏览器版本上进行测试),因为这个 我的节点机器上的浏览器不断更新,因为相应的驱动程序更新是一个手动过程,它迫使我登录到每台 selenium 节点机器并手动更新它们 .

这个过程可以自动化吗?

PS:我知道 dockerized selenium grid 可用于获取/提取最新的浏览器图像及其驱动程序,但是从传统的 selenium grid 切换到 dockerized selenium grid 是另一回事,并且需要一些时间来实现。

最佳答案

我认为您当前的方法不是可行的方法。新版本的浏览器发布时对 Selenium(或任何其他驱动程序)零考虑。一旦发布了新的浏览器更新,很有可能没有现有的驱动程序适用于该版本。 Selenium 团队通常需要几天时间才能发布更新的驱动程序以匹配最新版本的浏览器。

而且由于您会自动更新浏览器,因此您可能会自动中断 Selenium 测试,直到发布新的驱动程序版本,或者直到您降级浏览器。

现在,您可能会对此感到满意,并且可以禁用浏览器的测试,直到最新的 Selenium 驱动程序与最新的浏览器版本一起工作。如果是这种情况,那么这里有一些解决方案:

1) 如果您使用的是 C#,请将您的驱动程序作为 Nuget 包存储在测试解决方案中,或者存储在依赖项文件夹中。然后,无论它在哪里运行,都有该驱动程序的自动化引用。当您需要更新驱动程序时,您实际上只需要在一个地方更新它,然后检查更改。所有客户端机器都将通过您的 CI 流程下载最新代码,其中包括该新驱动程序。

2) 如果出于某种原因您不希望项目中的驱动程序作为 Nuget 包或手动保存的依赖项,则让您的 CI 处理更新过程。将您的自动化代码指向一个驱动程序,该驱动程序位于当前正在运行的任何客户端计算机上的某个公共(public)目录中 -> 您的计算机在下载依赖项后存储依赖项的任何位置。例如;在 Windows 机器上通过控制台下载 selenium 文件会将它们放在 %APPDATA% "C:\Users\xxxxxx\AppData\Roaming\npm\node_modules"的某个位置。这就是您的测试解决方案应该看的地方。

然后,在您的 CI 脚本中,在运行任何测试之前,下载最新的驱动程序。 Windows 和 Linux/Unix 内核之间的语法几乎相同,即使不相同。这假设您已安装 npm。

npm install -g selenium

如果你已经有最新的,那么什么都不会发生。如果您不这样做,则 CI 脚本将在运行测试之前下载最新的驱动程序。然后,您的测试解决方案将指向驱动程序在客户端上的存储位置,它将自动使用最新的驱动程序。

关于selenium - 如何在 selenium 中自动更新 chromeDriver 和 geckDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55365417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com