UnreachableBrowserException:无法开始新的会话。可能的原因是带有ChromeDriver的远程服务器的地址无效

时间:2019-01-15 07:06:43

标签: java selenium google-chrome selenium-webdriver selenium-chromedriver

代码

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

import java.io.File;
import java.util.HashMap;

public class tttt {
    public static void main(String[] args) throws InterruptedException {
        ChromeOptions options = new ChromeOptions();
        HashMap<String, Object> chromePrefs = new HashMap<>();
        //mePrefs.put("download.default_directory", new File(RobotPay.class.getClassLoader().getResource("alipaycaptchatmp/").getFile()).getAbsolutePath());
        chromePrefs.put("download.prompt_for_download", false);
        chromePrefs.put("download.directory_upgrade", true);
        chromePrefs.put("safebrowsing.enabled",true);
        chromePrefs.put("profile.managed_default_content_settings.images", 2);//禁图片
        options.setExperimentalOption("prefs", chromePrefs);
        options.addArguments("--headless");
        options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
        options.addArguments("--no-sandbox"); // Bypass OS security model

        System.setProperty("webdriver.chrome.driver", args[0]);
        options.setBinary(args[1]);


        ChromeDriver dr = new ChromeDriver(options);


    }
}

错误:

[qateadmin@UAT13352 ~]$ java -cp "/opt/tars/apps/100018485/releases/762245/WEB-INF/lib/*:./" tttt /opt/tars/apps/100018485/releases/762245/WEB-INF/classes/seleniumdriver/chromedriver /usr/bin/google-chrome
Starting ChromeDriver 2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5) on port 4461
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: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'UAT13352', ip: '10.5.117.188', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-327.4.5.el7.x86_64', java.version: '1.7.0_51'
Driver info: driver.version: ChromeDriver
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:665)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:170)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:159)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:148)
        at tttt.main(tttt.java:25)
Caused by: java.lang.IllegalStateException: The process has not exited yet therefore no result is available ...
        at org.apache.commons.exec.DefaultExecuteResultHandler.getException(DefaultExecuteResultHandler.java:76)
        at org.openqa.selenium.os.UnixProcess.checkForError(UnixProcess.java:171)
        at org.openqa.selenium.os.CommandLine.checkForError(CommandLine.java:185)
        at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:177)
        at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:166)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:78)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:644)
        ... 7 more

chrome版本:

[qateadmin@UAT13352 ~]$ google-chrome -version
Google Chrome 71.0.3578.98

chrome可执行模式为777

chromedriver版本:2.45(支持Chrome v70-72,模式为777

操作系统:centos_x64

此外,我同样在本地Ubuntu16.04_x64和CentOS7_x64虚拟机上进行了测试。 我被这个问题困住了,有什么建议吗?


更新
将Java升级到Java SE 8u191后,现在的错误消息是:

[qateadmin@UAT13352 ~]$ java -cp "/opt/tars/apps/100018485/releases/762245/WEB-INF/lib/*:./" tttt /opt/tars/apps/100018485/releases/762245/WEB-INF/classes/seleniumdriver/chromedriver /usr/bin/google-chrome
Starting ChromeDriver 2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5) on port 3602
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: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'UAT13352', ip: '10.5.117.188', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-327.4.5.el7.x86_64', java.version: '1.8.0_191'
Driver info: driver.version: ChromeDriver
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:665)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:170)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:159)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:148)
        at tttt.main(tttt.java:25)
Caused by: java.lang.IllegalStateException: The process has not exited yet therefore no result is available ...
        at org.apache.commons.exec.DefaultExecuteResultHandler.getException(DefaultExecuteResultHandler.java:76)
        at org.openqa.selenium.os.UnixProcess.checkForError(UnixProcess.java:171)
        at org.openqa.selenium.os.CommandLine.checkForError(CommandLine.java:185)
        at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:177)
        at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:166)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:78)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:644)
        ... 7 more

1 个答案:

答案 0 :(得分:1)

此错误消息...

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: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'UAT13352', ip: '10.5.117.188', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-327.4.5.el7.x86_64', java.version: '1.7.0_51'
.
Caused by: java.lang.IllegalStateException: The process has not exited yet therefore no result is available ...

...表示 ChromeDriver 无法启动/产生新的 WebBrowser ,即 Chrome浏览器会话。

您的主要问题是所使用的二进制版本之间的不兼容性

  • 您的 JDK版本 1.7.0_51 ,这很古老。
  • 您的 Selenium Client 版本是 2016-06-30 19:26:09 2.53.1 ,几乎是 3年

因此 JDK v7u51 Selenium Client v2.53.1 ChromeDriver v2.45 Google之间存在明显的不匹配Chrome 71.0.3578.98

解决方案

  • JDK 升级到最新级别JDK 8u191
  • 升级到当前水平Version 3.141.59
  • ChromeDriver 升级到当前的ChromeDriver v2.45级别。
  • Chrome 版本保持在 Chrome v670-72 级别之间。 (as per ChromeDriver v2.42 release notes
  • 通过您的 IDE
  • 清理您的项目工作区重建您的项目,并且仅具有必需的依赖项。
  • 如果您的基本 Web客户端版本过旧,请通过Revo Uninstaller进行卸载,并安装最新版本的 Web客户端。 li>
  • 进行系统重启
  • 执行您的@Test