我在Centos 7平台上下载了最新版本的chromedriver:https://chromedriver.storage.googleapis.com/index.html?path=74.0.3729.6/我启动chromedriver并收到此错误。
错误:
Starting ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1556179366.141][SEVERE]: bind() failed: Cannot assign requested address (99)
我该如何解决这个问题?
8条答案
按热度按时间ajsxfq5m1#
在我的例子中,运行带有
--verbose
标志的chromedriver
有助于解决这个问题:Chrome试图监听IPv6地址,Docker中未启用此功能。您可以选择enable IPv6支持(仅适用于Linux主机)或忽略此错误,因为
chromedriver
进程无论如何都将监听IPv4。yqlxgs2m2#
在一行中:您需要将
--whitelisted-ips=
传递到chrome驱动程序(不是chrome!)您可以通过不同的方式执行此操作(取决于您的环境设置):
如果您从代码中本地/直接使用ChromeDriver(不使用RemoteWebDriver),只需在ChromeDriver init之前插入下面的行
如果您远程使用它(例如,selenium集线器/网格),则需要在节点启动时设置系统属性,如以下命令所示:
或通过传递
JAVA_OPTS
envj2cgzkjk3#
我设法通过添加如下所示的参数来解决这个问题(Python)
这是来自Google的故障排除提示:
默认情况下,Docker运行一个
/dev/shm
共享内存空间为64MB的容器。这对于Chrome来说通常太小,并且会导致Chrome在渲染大型页面时崩溃。要修复此问题,请使用docker run--shm-size=1gb
运行容器,以增加/dev/shm
的大小。自Chrome 65起,不再需要这样做。请使用--disable-dev-shm-usage
标志启动浏览器q8l4jmvw4#
原因在别的地方。我在Docker容器上运行Chrome,对我来说,当驱动程序在无头模式下运行时,这个问题就解决了。
结果:现在测试成功运行,没有任何错误。
rmbxnbpk5#
我的团队也遇到过同样的问题,但我们的解决方案是全新的。可能是因为根本原因不同,尽管可见的错误消息是相同的。
这个问题5天前开始出现在我们的CI/CD管道中。我们意识到,同时新的 selenium /独立 chrome 对接图像被推到 selenium 对接中心。
https://hub.docker.com/r/selenium/standalone-chrome/tags
最新的图像导致了这个错误。在1.5年的时间里,以前从未发生过这种情况。但最新的图像却发生了这种情况。该图像的摘要:第一章
解决方案是将我们的Jenkins使用的图像还原为21天前推送的 selenium /独立 chrome Docker图像。2006年12月15日,北京
我们计划检查即将推出的新映像与CI/CD的兼容性,以便我们可以使用最新的Selenium映像进行更新
谢谢
ghhkc1vu6#
我也遇到过类似的问题;我的问题是我没有退出现有的驱动程序,并试图再次使用。driver.quit()解决了我的问题。
tktrz96b7#
在我的例子中,有2个Docker容器正在运行,端口4444被selenium使用。关闭一个容器解决了另一个容器的问题。消息仍然存在,但测试正在运行。早些时候,它们被卡住了。
iqih9akk8#
我在尝试在容器
ubuntu:20.04
中运行测试(Java)时遇到了这个问题。有线程声明
--no-sandbox
必须是第一个,但我做了实验,这是没有必要的,至少在Java中是这样。