我在Centos 7平台上下载了最新版本的chromedriver:https://chromedriver.storage.googleapis.com/index.html?path=74.0.3729.6/ 我启动chromedriver并收到此错误。
错误:
在端口9515上启动ChromeDriver 74.0.3729.6(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs / branch-heads / 3729 @ {#29}) 仅允许本地连接。 请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。 [1556179366.141] [SEVERE]:bind()失败:无法分配请求的地址(99)
我该如何解决?
答案 0 :(得分:3)
在一行中:您需要将--whitelisted-ips=
传递到 chrome驱动程序(不是chrome!)
您可以通过其他方式(取决于您的环境设置)进行操作:
如果您从代码中本地/直接使用ChromeDriver(而不使用RemoteWebDriver),只需在ChromeDriver初始化之前在下面插入行
System.setProperty("webdriver.chrome.whitelistedIps", "");
如果您远程使用它(例如selenium hub / grid),则需要在节点启动时设置系统属性,例如在命令中:
java -Dwebdriver.chrome.whitelistedIps= testClass etc...
或通过传递JAVA_OPTS
env
chrome:
image: selenium/node-chrome:3.141.59
container_name: chrome
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
- JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=
答案 1 :(得分:2)
在我的情况下,运行带有chromedriver
标志的--verbose
有助于解决问题:
[1564749154.010][SEVERE]: bind() failed: Cannot assign requested address (99)
[1564749154.011][INFO]: listen on IPv6 failed with error ERR_ADDRESS_INVALID
Chrome浏览器尝试监听Docker中未启用的IPv6地址。您可以enable IPv6支持(仅适用于Linux主机),也可以忽略该错误,因为chromedriver
进程仍将在IPv4上进行侦听。
答案 2 :(得分:2)
我设法通过添加如下所示的参数(Python)来解决
options = webdriver.ChromeOptions()
options.add_argument('--disable-dev-shm-usage')
答案 3 :(得分:1)
原因在于其他地方。我在docker容器上运行chrome,对我来说,当驱动程序以无头模式运行时,此问题已解决。
ChromeOptions选项=新的ChromeOptions()。setHeadless(true); WebDriver驱动程序=新的ChromeDriver(选项);
结果:现在测试成功运行,没有任何错误。
答案 4 :(得分:1)
我的团队遇到了同样的问题,但在我们的案例中,解决方案是全新的。 可能是因为根本原因不同,虽然可见的错误信息是一样的。
该问题在 5 天前开始出现在我们的 CI/CD 管道中。 我们意识到同时新的 selenium/standalone-chrome docker 镜像被推送到 selenium docker hub。
https://hub.docker.com/r/selenium/standalone-chrome/tags
那个最新的图像导致了这个错误。这在 1.5 年期间从未发生过。但它发生在最新的图像上。该图片摘要:9943ba9d2a89e984080f5681b390229fb47f7d3bb732e4f440456fc52335bae8
解决方案是将我们 Jenkins 使用的镜像恢复为 21 天前推送的 selenium/standalone-chrome docker 镜像。摘要:bc4023992691ab8e2f20297f334fdcddd982928fbd969239b39b3dbc2dfc0657
我们计划检查新镜像是否与我们的 CI/CD 兼容,以便我们可以更新最新的 selenium 镜像
谢谢
答案 5 :(得分:0)
该错误表示端口/地址组合已在使用中
这意味着
要查看主机上打开的端口,请使用命令netstat -vatn
。这将提供很多输出!要检查是否正在使用9515,请使用netstat -vatn |grep 9515
您可能需要做的就是等待几分钟,让套接字超时,然后重试
更新:chromedriver中必须设置一个选项,这是使用docker的一种方法。请注意,--whitelisted-ips之后没有任何内容:强制为未设置。为此,您需要在运行docker命令的目录中chromedriver zip的副本
x-Mac$ docker run -it -v $(pwd):/root/stuff -p 9515:9515 centos/python-36-centos7 /bin/bash -c "cd /tmp; unzip /root/stuff/chromedriver_linux64.zip; ./chromedriver --whitelisted-ips="
答案 6 :(得分:0)
在我的情况下,我们有2个docker容器正在运行,硒使用了端口4444。关闭一个容器可以解决另一个容器的问题。该消息仍然存在,但是测试正在运行。早些时候他们陷入困境。
答案 7 :(得分:0)
我有类似的问题;我的问题是我没有退出现有驱动程序,而是尝试再次使用。 driver.quit()解决了我的问题。