【问题标题】:Chrome not reachable Selenium WebDriver errorChrome 无法访问 Selenium WebDriver 错误
【发布时间】:2017-08-15 07:10:39
【问题描述】:

我正面临这个问题;我知道这个问题已经存在,并且我已经尝试了提到的解决方案,因此用我的配置和代码提出了这个问题。

早期脚本正在运行,但现在它们没有运行所以我尝试制作一个基本的打开浏览器脚本。

Selenium WebDriver 最新版本:http://selenium-release.storage.googleapis.com/3.5/selenium-java-3.5.0.zip

ChromeDriver 上的最新版本:http://chromedriver.storage.googleapis.com/index.html?path=2.31/

基本打开浏览器代码:

package Trial;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Trial_Class {
    public static void main(String args[]){
        System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("http://www.youtube.com");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    }
}

但我仍然收到以下错误:

 Starting ChromeDriver 2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8) on port 43967
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.WebDriverException: chrome not reachable
  (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Windows NT 6.3.9600 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 61.81 seconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'SWATI', ip: '192.168.0.5', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_121'
Driver info: driver.version: ChromeDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167)
    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$24(ProtocolHandshake.java:360)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:363)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:137)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:641)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:254)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:137)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:178)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:167)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:124)
    at Trial.Trial_Class.main(Trial_Class.java:11)

提前致谢。

【问题讨论】:

  • 更新您的 Chrome 浏览器版本。

标签: selenium-webdriver selenium-chromedriver


【解决方案1】:

您的 chromedriver 启动正常:

"启动 ChromeDriver 2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8) 在端口 43967"

问题是浏览器本身没有响应。所以我有两个想法:

1) 您的浏览器未安装在默认位置;如果是这种情况,请将其添加到您的代码中:

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
WebDriver driver = new ChromeDriver(capabilities);

2) 您的浏览器是最新版本,但您的 chromedriver 不是 - 当前是 2.33

【讨论】:

    【解决方案2】:

    我发现 chromedriver 很难解析 localhost 并且在此期间它会打印出来

    Timed out connecting to Chrome, retrying...
    

    它首先尝试通过 ipv6 连接,然后我猜想回退到 ipv4。所以对我有用的是以这种方式更改“本地主机”的优先级

    您唯一需要做的就是更改优先级:

    打开 RegEdit,导航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters 创建 DisabledComponents DWORD 注册表值,将其值设置为 20 (十六进制)。 src

    【讨论】:

      【解决方案3】:

      你必须设置

      setProperty(String key, String path) 
      

      这里 "key" 是您的“webdriver.chrome.driver”,"path" 是“存储驱动程序的路径”。在路径中使用单个正斜杠 "/"

      System.setProperty("webdriver.chrome.driver", "E:/chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      driver.get("http://www.youtube.com");
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      

      以上代码在 Selenium jar 3.5.0 中运行良好。希望在您的系统中也能正常工作。

      【讨论】:

        猜你喜欢
        • 2021-02-11
        • 2020-08-26
        • 2019-06-18
        • 2021-01-15
        • 2015-04-06
        • 1970-01-01
        • 2022-08-15
        • 2022-12-14
        • 2020-07-19
        相关资源
        最近更新 更多