首页 > 解决方案 > 分布式 selenium 网格和 http 代理

问题描述

我已经看到很多关于在代理后面使用 Selenium 的问题,其中 selenium 节点通过代理连接到互联网。处处指出的解决方案是在创建 webdriver 实例时在代码中指定代理设置。

不幸的是,在我的情况下,这不起作用,因为我使用的是分布式硒网格,其中不同的节点需要不同的代理设置。运行测试时,运行的测试仅与网格集线器通信,并且无法控制它将在哪个节点上运行 - 因此无法从测试内部设置代理。每个节点都是一台 Linux 机器,Firefox 和 Chrome 都在虚拟帧缓冲区中运行。目前,网格有大约 25 个节点,分布在多个数据中心,但未来这个数字可能会增长到 1000 个。

这种设置有商业原因 - 我无法(无论是技术上还是政治上)改变它们。

有什么方法可以在节点级别设置代理并将其仅应用于该节点上发生的所有事情?

标签: seleniumproxyselenium-gridhttp-proxy

解决方案


显然,我需要做的就是定义http_proxyhttps_proxy环境变量,然后 chrome 将尊重这些变量。

对于firefox,代理参数可以添加到可以通过运行确定的/etc/firefox-$version/pref/firefox.js地方。$versionfirefox -v | awk '{print substr($3,1,3)}'


推荐阅读