Proxy 无法将seleniumgrid中的docker chrome节点绑定到代理容器 问题
我正在docker桥接网络中使用mobbrowserproxy启动seleniumgrid。远程驱动程序代理设置配置正确,但我无法从chrome驱动程序连接到代理服务器。我已经研究了所有问题,但我找不到解决办法 下面是显示驱动程序所需功能/选项的错误 堆栈跟踪 我相信stacktrace的关键点就在这里Proxy 无法将seleniumgrid中的docker chrome节点绑定到代理容器 问题,proxy,docker-compose,selenium-chromedriver,selenium-grid,Proxy,Docker Compose,Selenium Chromedriver,Selenium Grid,我正在docker桥接网络中使用mobbrowserproxy启动seleniumgrid。远程驱动程序代理设置配置正确,但我无法从chrome驱动程序连接到代理服务器。我已经研究了所有问题,但我找不到解决办法 下面是显示驱动程序所需功能/选项的错误 堆栈跟踪 我相信stacktrace的关键点就在这里 chrome_1 | Only local connections are allowed. chrome_1 | Please protect ports used
chrome_1 | Only local connections are allowed.
chrome_1 | Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
chrome_1 | [1589038824.252][SEVERE]: bind() failed: Cannot assign requested address (99)
复制
复制此错误。如果您只需启动容器并登录到chromenode并使用chromedriver cli,您应该会在终端中看到相同的错误。同样,这个问题的目标是通过chromedriver代理设置连接代理容器
version: "3"
services:
selenium-hub:
image: selenium/hub:3.141.59-20200409
container_name: selenium-hub
ports:
- "4444:4444"
networks:
- caowebtests
chrome:
image: selenium/node-chrome:3.141.59-oxygen
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
networks:
- caowebtests
expose:
- 9515
firefox:
image: selenium/node-firefox:3.141.59-20200409
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
networks:
- caowebtests
opera:
image: selenium/node-opera:3.141.59-20200409
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
networks:
- caowebtests
proxy:
image: spothero/browsermob-proxy:1.0.0
depends_on:
- selenium-hub
networks:
- caowebtests
ports:
- "9090:9090"
links:
- selenium-hub
- firefox
- chrome
- opera
robottests:
container_name: robottests
command: /bin/sleep infinity
depends_on:
- selenium-hub
build: .
volumes:
- ./reports:/cao_ui_tests/reports
networks:
- caowebtests
networks:
caowebtests:
driver: bridge
正如您在上面的跟踪中所看到的。所需的功能和选项都在那里。我想弄清楚的是为什么chrome驱动程序在上面的代理设置中出现了这个错误
在登录页面上查找第一个元素时,我的测试失败。我不确定您是否需要测试脚本和执行测试脚本的能力来尝试重现这一点,或者这是否是可以指出的。如果需要,我可以将此回购添加到github
下面是测试脚本
环境
这是在MacOs Mojave上
建议
我认为这个脚本最重要的部分是连接到hub和mob浏览器代理容器的变量
${BMP_HOST} 0.0.0.0
${BMP_PORT} 9090
${SELENIUM} http://0.0.0.0:4444/wd/hub
这个脚本只是向您展示了我如何设置您在chrome节点的stacktrace中已经看到的首选项
chrome_1 | Only local connections are allowed.
chrome_1 | Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
chrome_1 | [1589038824.252][SEVERE]: bind() failed: Cannot assign requested address (99)
工具书类
这些是我在网上已经发现的问题
-在这个问题的底部,通过添加解决了这个问题,正如您在上面看到的。我已经试过了
--disable-dev-shm-usage'
这家伙通过在docker配置中添加ipv6解决了这个问题。但是我在docker compose中使用了桥接网络,所以我不明白为什么这个选项很重要
以前的尝试
我不确定这是否是chromedriver或docker的问题。经历一些我已经尝试过的事情。。。
1.我尝试登录到chrome容器并使用chromedriver cli…我也遇到了相同的错误
我确实试着使用包含chromedriver 74的图像作为下一条评论
消除
chrome_1 | Only local connections are allowed.
chrome_1 | [1589038824.252][SEVERE]: bind() failed: Cannot assign requested address (99)
您需要为docker chrome节点图像设置envJAVA_OPTS
:
chrome:
image: selenium/node-chrome:3.141.59-oxygen
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
- JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=
networks:
- caowebtests
expose:
- 9515
消除
chrome_1 | Only local connections are allowed.
chrome_1 | [1589038824.252][SEVERE]: bind() failed: Cannot assign requested address (99)
您需要为docker chrome节点图像设置envJAVA_OPTS
:
chrome:
image: selenium/node-chrome:3.141.59-oxygen
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
- JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=
networks:
- caowebtests
expose:
- 9515