- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有多个节点机器的 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
关于selenium - 如何在 selenium 中自动更新 chromeDriver 和 geckDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55365417/
我是一名优秀的程序员,十分优秀!