我在谷歌Chrome上尝试使用Selenium。它能在我的电脑上正常工作,但不会在我的Debian 8 64位服务器上运行。但是在服务器上,我得到了下面的代码--这个错误。
root@vps:/opt/SupportBot# java -jar /opt/web/googletest.jar
Starting ChromeDriver 2.34.522913 (36222509aa6e819815938cbf2709b4849735537c) on port 14684
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary
(Driver info: chromedriver=2.34.522913 (36222509aa6e819815938cbf2709b4849735537c),platform=Linux 2.6.32-042stab127.2 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 147 milliseconds
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:14.666Z'
System info: host: 'vps.server.com', ip: 'X.XXX.XXX.XXX', os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-042stab127.2', java.version: '1.8.0_151'
Driver info: driver.version: ChromeDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
at GoogleSearch.main(GoogleSearch.java:14)下面是我在windows PC和debian 8服务器上使用的代码:https://pastebin.com/auyNbi28
用过的软件:- Selenium版本3.8.1 - ChromeDriver 2.34-Debian8
更新:谢谢C-奥托,现在我开始前进了!我发现这个问题是因为没有安装铬。但是现在我在循环中得到了这个错误
Starting ChromeDriver 2.34.522913 (36222509aa6e819815938cbf2709b4849735537c) on port 2783 Only local connections are allowed. [0.748][SEVERE]: CreatePlatformSocket() returned an error, errno=97: Address family not supported by protocol (97)
发布于 2018-01-09 04:55:20
你看到的第一个错误是:
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)造成此错误的主要原因如下:
java.lang.RuntimeException: exception in constructorjava.lang.reflect.InvocationTargetExceptionjava.lang.IllegalArgumentException您可以找到关于这个回答中提到的要点的详细讨论。
你看到的第二个错误是:
[SEVERE]: CreatePlatformSocket() returned an error, errno=97: Address family not supported by protocol (97)造成此错误的最常见原因是/etc/hosts文件中的错误配置。确保/etc/hosts中的条目是正确的,如下所示:
....
--- 127.0.0.1 localhost.domain localhost
+++ 127.0.0.1 localhost localhost但通常情况下,CreatePlatformSocket()错误可能来自host_resolver_impl.cc.中的IPv6探测。
Issue#700347清楚地提到Chrome不支持没有IPv6支持的内核。在See system requirements下面有一个受支持的Linux发行版列表:topic=3227046
这起事故已经报告给铬,并正在被跟踪的这里。
https://stackoverflow.com/questions/48154045
复制相似问题