如何在selenium中自动更新chromeDriver和geckoDriver

问题描述 投票:0回答:1

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

现在这里的Chrome和firefox浏览器(在所有selenium节点机器上)都设置在'自动更新'(这是必需的,因为我希望我的应用程序始终在最新的浏览器版本上测试),因为我的节点机器上的这些浏览器不断更新更常见的是,由于各自的驱动程序更新是一个手动过程,它迫使我登录到每个selenium节点机器并手动更新它们。

这个过程可以自动化吗?

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

selenium selenium-chromedriver selenium-grid geckodriver
1个回答
3
投票

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

由于您自动更新了浏览器,因此您可能会自动破坏Selenium测试,直到发布新的驱动程序版本,或者直到您降级浏览器为止。

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

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

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

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

npm install -g selenium

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

© www.soinside.com 2019 - 2024. All rights reserved.