Selenium UnreachableBrowserException-Java

时间:2018-06-21 07:39:19

标签: java selenium exception browser unreachable-statement

System.setProperty("webdriver.chrome.driver","D:/chromedriver.exe");
        WebDriver driver = new ChromeDriver();   
        driver.navigate().to("https://link");
        driver.findElement(By.cssSelector("#username")).sendKeys("id");
        driver.findElement(By.cssSelector("#password")).sendKeys("pass");
        driver.findElement(By.cssSelector("#clientName")).sendKeys("name");
        driver.findElement(By.cssSelector("#submitButton")).click();
        System.out.println("Okay !");

我为Chrome驱动程序设置了属性。当我运行它给一个错误。 (下)我搜索了很多,但没有找到任何解决方案。

Starting ChromeDriver 2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab) on port 10589
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
System info: host: 'DESKTOP-9HVORCR', ip: '192.168.1.24', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_171'
Driver info: driver.version: ChromeDriver
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:564)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:207)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
    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 zaaa.main.main(main.java:11)
Caused by: java.lang.IllegalArgumentException: Unexpected char 0x131 at 23 in User-Agent value: selenium/3.12.0 (java wındows)
    at okhttp3.Headers$Builder.checkNameAndValue(Headers.java:338)
    at okhttp3.Headers$Builder.add(Headers.java:288)
    at okhttp3.Request$Builder.addHeader(Request.java:177)
    at org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:85)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:101)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
    ... 6 more

我尝试过这些:

  1. 32/64位驱动程序。
  2. 以管理员身份运行。
  3. 创建一个Try / Catch块。
  4. 其他驱动程序。 (类似于Operadriver.exe)(结果:相同错误)

5 个答案:

答案 0 :(得分:1)

我认为您的窗户不是英语。我有同样的问题。当我在英文版Windows 10中尝试相同的代码时,代码可以正常工作。

答案 1 :(得分:0)

在实例化“ WebDriver driver = new ChromeDriver();”之前添加这些行

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--no-sandbox");

然后在已声明Webdriver的位置添加参数,如下所示:-

WebDriver driver = new ChromeDriver(chromeOptions);

希望它能对您有所帮助。

答案 2 :(得分:0)

您在这里使用
硒版本:3.12.0
chromedriver版本:2.40

当我尝试使用这些配置(它们是当前最新的)时 我能够毫无例外地启动该应用程序,并且日志中的记录如下:

Starting ChromeDriver 2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab) on port 35584
Only local connections are allowed.
Jun 21, 2018 2:42:51 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Okay !

与开始日志相同。 我的chrome浏览器版本是:

Version 67.0.3396.87 (Official Build) (64-bit)

我认为您应该检查.m2文件夹并删除

  

.m2 \ repository \ org \ seleniumhq \ selenium

文件夹,然后再次尝试下载依赖项。

还更新到最新的chrome浏览器版本。

希望有帮助。

答案 3 :(得分:0)

这是土耳其语Windows的问题。如异常消息中所示,用户代理值“ selenium / 3.12.0(javawındows)”中的“ı”字符是导致异常的原因。 问题是字符串“ WINDOWS ”被更改为小写,并且由于TR语言环境而导致了“ wındows”。我发现它是在类org.openqa.selenium.remote.http.HttpClient中生成的,并像这样添加了Locale.US

String USER_AGENT = String.format(
      "selenium/%s (java %s)",
      new BuildInfo().getReleaseLabel(),
      (Platform.getCurrent().family() == null ?
          Platform.getCurrent().toString().toLowerCase(Locale.US) :
          Platform.getCurrent().family().toString().toLowerCase(Locale.US)));

我使用所做的更改编译了库,现在可以使用了。我还在github上打开了pull request

您还可以找到我编辑过的叉子here

答案 4 :(得分:0)

Locale.setDefault(new Locale("en", "EN"));

您也可以尝试一下。它对我有用。