使用ChromeDriver时获取UnreachableBrowserException

时间:2014-03-04 05:55:39

标签: selenium selenium-webdriver selenium-chromedriver

这段代码是:

另一个编辑:想要注意我正在使用java来实现这一点,所以我不认为斜杠会是一个问题。 (但如果我错了,请纠正我)

编辑:我想补充的另一件事是,它实际上是说它启动了Chrome驱动程序版本,但在此之后立即失败

System.setProperty("webdriver.chrome.driver", "webdrivers/chromedriver.exe");
        driver = new ChromeDriver();

并且我最终得到的错误是

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.37.0', revision: 'a7c61cb', time: '2013-10-18 17:15:02'
System info: host: '****-PC', ip: '10.10.10.1', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_51'

没有堆栈跟踪,这会在webdriver尝试启动后立即发生。我猜测上面的代码只是因为netbeans并没有真正表明它出错的地方。

神秘之处在于,这在我的计算机上起作用,但是当试图在同事的计算机上运行它时,它只会产生这个错误。 Firefox适合她,但IE和Chrome都会产生这种效果。有什么想法吗?

编辑:显然有一个堆栈跟踪:

Driver info: driver.version: ChromeDriver
 at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:165)
 at     org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:62)
 at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527)
 ... 7 more
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for     [http://localhost:8891/status] to be available after 20002 ms
 at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:104)
 at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:163)
 ... 9 more
Caused by: com.google.common.util.concurrent.UncheckedTimeoutException: java.util.concurrent.TimeoutException
 at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:143)
 at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:79)
 ... 10 more
Caused by: java.util.concurrent.TimeoutException
 at java.util.concurrent.FutureTask.get(FutureTask.java:201)
 at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:130)
 ... 11 more

4 个答案:

答案 0 :(得分:1)

您需要添加Windows中可能需要包含转义反斜杠的绝对路径,例如

System.setProperty("webdriver.chrome.driver", "C:\\chromedriver\\chromedriver.exe"); 
driver = new ChromeDriver();

或者您可以将属性添加到系统路径。

如果这些选项不起作用,可能是连接到ChromeDriver时出现问题。在这种情况下,您可以打开Chromedriver.exe文件

WebDriver driver = new RemoteWebDriver("http://localhost:9515", DesiredCapabilities.chrome());
driver.get("http://www.google.com");

https://code.google.com/p/selenium/wiki/ChromeDriver

答案 1 :(得分:0)

  

webdrivers / chromedriver.exe

我怀疑它找不到chromedriver。您确定这是通往chromedriver.exe的正确途径吗?

您应该尝试使用绝对路径。

例如C:/Users/Name/Desktop/webdrivers/chromedriver.exe

答案 2 :(得分:0)

  1. 确保您使用的是最新的Chrome浏览器,其中包含一个版本和
  2. 最新Chromedriver.exe 2.9
  3. 应该提到路径,如C://Test//chromedriver.exe

答案 3 :(得分:0)

当我使用绝对路径时,它给了我错误。但是,当我使用可执行文件所在的目录时,它就开始了。这是一个C#示例

using OpenQA.Selenium.Chrome; 

public class ChromeOptionsWithPrefs : ChromeOptions
{
    public Dictionary<string, object> prefs { get; set; }
}

public static void Start()
{
    var options = new ChromeOptionsWithPrefs();
    options.AddArguement("-incognito");
    using (IWebDriver driver = new ChromeDriver(@"C:\FilePath\", options))
    {
        //perform the test
        driver.Navigate().GoToURL(@"http://www.google.com"); 
        driver.Quit(); 
    }
}

我只是使用prefs来不在我运行测试的任何机器上存储任何数据。它不是必需的,但你可以传递一些有趣的选项。