Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux “如何修复”;[严重]:绑定()失败:无法分配请求的地址(99)";启动chromedriver时_Linux_Selenium Chromedriver - Fatal编程技术网

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

Linux “如何修复”;[严重]:绑定()失败:无法分配请求的地址(99)";启动chromedriver时,linux,selenium-chromedriver,Linux,Selenium Chromedriver,我在Centos 7平台上下载了chromedriver的最新版本: 我启动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 Chro

我在Centos 7平台上下载了chromedriver的最新版本: 我启动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)
我怎样才能解决这个问题


在我的例子中,使用
--verbose
标志运行
chromedriver
有助于解决问题:

[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中未启用该地址。您可以支持(仅在Linux主机上工作)或忽略错误,因为
chromedriver
进程仍将侦听IPv4。

在我的示例中,有两个docker容器正在运行,selenium使用的端口4444。关闭一个容器解决了另一个容器的问题。消息仍然存在,但测试正在运行。早些时候,他们陷入困境。

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

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

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

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

您可以采用不同的方式(取决于您的环境设置):

如果从代码中本地/直接使用ChromeDriver(不使用RemoteWebDriver),只需在ChromeDriver init之前插入下面的行

System.setProperty(“webdriver.chrome.whitelistedIps”,”);
如果远程使用它(如selenium hub/grid),则需要在节点启动时设置系统属性,如命令:

java -Dwebdriver.chrome.whitelistedIps= testClass etc...
或通过传递
JAVA\u选项
env

chrome:
图片:selenium/node chrome:3.141.59
容器名称:chrome
取决于:
-硒轮毂
环境:
-集线器\主机=selenium集线器
-集线器端口=4444
-JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=

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

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


嗨,如何“忽略错误”?在我的案例中,当我什么也没做时,容器停止了。@sww176可能是其他原因导致了您案例中的错误。你能得到完全相同的输出吗?在我的例子中,这个过程在打印错误消息后继续工作。这是相同的错误。我添加了--verbose标志,chromedriver.log显示[1564749154.011][INFO]:在IPv6上侦听失败,错误为ERR\u ADDRESS\u INVALID。我通过在webdriver参数中添加--白名单IP来修复这个问题。感谢您的帮助。这可能是Windows上Docker特有的,因为这是升级到新版本后几天前才开始的
options = webdriver.ChromeOptions()
options.add_argument('--disable-dev-shm-usage')