selenium - 分布式 selenium 网格和 http 代理
问题描述
我已经看到很多关于在代理后面使用 Selenium 的问题,其中 selenium 节点通过代理连接到互联网。处处指出的解决方案是在创建 webdriver 实例时在代码中指定代理设置。
不幸的是,在我的情况下,这不起作用,因为我使用的是分布式硒网格,其中不同的节点需要不同的代理设置。运行测试时,运行的测试仅与网格集线器通信,并且无法控制它将在哪个节点上运行 - 因此无法从测试内部设置代理。每个节点都是一台 Linux 机器,Firefox 和 Chrome 都在虚拟帧缓冲区中运行。目前,网格有大约 25 个节点,分布在多个数据中心,但未来这个数字可能会增长到 1000 个。
这种设置有商业原因 - 我无法(无论是技术上还是政治上)改变它们。
有什么方法可以在节点级别设置代理并将其仅应用于该节点上发生的所有事情?
解决方案
显然,我需要做的就是定义http_proxy
和https_proxy
环境变量,然后 chrome 将尊重这些变量。
对于firefox,代理参数可以添加到可以通过运行确定的/etc/firefox-$version/pref/firefox.js
地方。$version
firefox -v | awk '{print substr($3,1,3)}'
推荐阅读
- php - angularjs GET 500(内部服务器错误)
- python - 在 Excel 中打开 Python 写入 CSV
- memory - 文件系统中的命名管道不是很慢吗?
- mysql - 如何使用 django 和 phpmyadmin 配置 mysql
- c# - 使用属性路由在 .NET Core 2.0 中接受 API 的多个参数
- php - 连接两个多维数组
- python - Python numpy:linalg.pinv() 太不精确
- jquery - 使用 jQuery 将文本附加到 span
- c# - 为什么这个 SQLite 脚本会影响多行?
- algorithm - 不属于集合的等概率样本数