启动 chromedriver 时如何修复“[严重]:bind() 失败:无法分配请求的地址 (99)”

2024-11-01 08:41:00
admin
原创
282
摘要:问题描述:我在 Centos 7 平台下载了最新版本的 chromedriver:https://chromedriver.storage.googleapis.com/index.html? path=74.0.3729.6/ 我启动 chromedriver 并出现此错误。错误 :Starting Chr...

问题描述:

我在 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)

我该如何解决这个问题?

在此处输入图片描述


解决方案 1:

就我而言,chromedriver使用--verboseflag 运行有助于解决问题:

[1564749154.010][SEVERE]: bind() failed: Cannot assign requested address (99)
[1564749154.011][INFO]: listen on IPv6 failed with error ERR_ADDRESS_INVALID

Chrome 尝试监听 IPv6 地址,但 Docker 中未启用该地址。您可以启用 IPv6支持(仅适用于 Linux 主机),也可以忽略该错误,因为chromedriver进程无论如何都会监听 IPv4。

解决方案 2:

在一行中:您需要传递--whitelisted-ips=chrome 驱动程序(而不是 chrome!)

您可以用不同的方式进行操作(取决于您的环境设置):

如果您在代码中本地/直接使用 ChromeDriver(而不是使用 RemoteWebDriver),只需在 ChromeDriver init 之前插入以下几行

    System.setProperty("webdriver.chrome.whitelistedIps", "");

如果您远程使用它(例如 selenium hub/grid),则需要在节点启动时设置系统属性,如下命令:

java -Dwebdriver.chrome.whitelistedIps= testClass etc...

或者通过传递JAVA_OPTSenv来运行 docker

  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=

解决方案 3:

我设法通过添加如下所示的参数来解决问题(Python)

options = webdriver.ChromeOptions()
options.add_argument('--disable-dev-shm-usage')

这是来自Google 的故障排除提示:

默认情况下,Docker 运行一个/dev/shm共享内存空间为 64MB 的容器。这对于 Chrome 来说通常太小,并且会导致 Chrome 在渲染大型页面时崩溃。要修复此问题,请使用 docker run 运行容器--shm-size=1gb以增加 的大小/dev/shm自 Chrome 65 起,不再需要这样做。相反,请使用--disable-dev-shm-usage标志启动浏览器

解决方案 4:

原因在于其他地方。我在 docker 容器上运行 chrome,当驱动程序以无头模式运行时,这个问题就解决了。

ChromeOptions options = new ChromeOptions().setHeadless(true);
WebDriver driver = new ChromeDriver(options);

结果:现在测试成功运行,没有任何错误。

解决方案 5:

我的团队也遇到了同样的问题,但我们的解决方案是全新的。可能是因为根本原因不同,尽管可见的错误消息相同。

5 天前,这个问题开始出现在我们的 CI/CD 管道中。我们意识到,新的 selenium/standalone-chrome docker 镜像同时被推送到 selenium docker hub。

https://hub.docker.com/r/selenium/standalone-chrome/tags

最新那张图像导致了此错误。在一年半的时间里,这种情况从未发生过。但最新那张图像却出现了。该图像的摘要:9943ba9d2a89e984080f5681b390229fb47f7d3bb732e4f440456fc52335bae8

解决方案是将我们的 Jenkins 使用的镜像恢复为 21 天前推送的 selenium/standalone-chrome docker 镜像。摘要:bc4023992691ab8e2f20297f334fdcddd982928fbd969239b39b3dbc2dfc0657

我们计划检查即将推出的新图像是否与我们的 CI/CD 兼容,以便我们能够恢复最新的 selenium 图像

谢谢

解决方案 6:

我遇到了类似的问题;我的问题是我没有退出现有的驱动程序并尝试再次使用。driver.quit() 解决了我的问题。

解决方案 7:

在我的例子中,有两个 docker 容器正在运行,selenium 使用端口 4444。关闭一个容器解决了另一个容器的问题。消息仍然存在,但测试正在运行。之前它们卡住了。

解决方案 8:

我在尝试在容器中运行测试(Java)时遇到了这个问题ubuntu:20.04。从本指南 Selenium 中提取了以下内容:WebDriverException:Chrome 无法启动:崩溃,因为 google-chrome 不再运行,因此 ChromeDriver 假设 Chrome 已崩溃

ChromeOptions options = new ChromeOptions();
options.addArguments("--no-sandbox", "--headless", "--window-size=1024x768");

有线程表明--no-sandbox必须是第一个,但是我实验过,这不是必需的,至少在 Java 中不是。

解决方案 9:

经过数十个小时的投入,终于找到了解决办法。首先是 chromeoptions:

ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.whitelistedIps", "");
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--disable-gpu");
options.addArguments("--window-size=1920,1080");
options.addArguments("--remote-debugging-port=9222");
options.addArguments("--disable-extensions");
options.addArguments("--disable-software-rasterizer");

其次你的docker没有显示,添加这个:

Xvfb :99 -screen 0 1920x1080x24 &
# Give Xvfb some time to start
echo "Xvfb started."
sleep 5

现在建造!

仍然无法正常工作(java)。请记住,您复制了 war 文件,但目标仍然没有使用选项更新,重建它

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3892  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2717  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   52  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   54  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   49  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用