Selenium 使用ChromeDriver时获取无法访问的BrowserException
这段代码是: 另一个编辑:我想指出,我正在使用java来实现这一点,所以我不认为斜杠是一个问题。(如果我错了,请纠正我) 编辑:我想补充的一点是,它实际上说它启动了chrome驱动程序版本,但之后立即失败Selenium 使用ChromeDriver时获取无法访问的BrowserException,selenium,selenium-webdriver,selenium-chromedriver,Selenium,Selenium Webdriver,Selenium Chromedriver,这段代码是: 另一个编辑:我想指出,我正在使用java来实现这一点,所以我不认为斜杠是一个问题。(如果我错了,请纠正我) 编辑:我想补充的一点是,它实际上说它启动了chrome驱动程序版本,但之后立即失败 System.setProperty("webdriver.chrome.driver", "webdrivers/chromedriver.exe"); driver = new ChromeDriver(); 我最终会犯的错误是 org.openqa.selenium.r
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
webdrivers/chromedriver.exe
我怀疑它找不到chromedriver。您确定这是指向chromedriver.exe的正确路径吗
您可能应该尝试使用绝对路径
例如C:/Users/Name/Desktop/webdrivers/chromedriver.exe
Chromedriver.exe
版本2.9C://Test//chromedriver.exe
您需要添加绝对路径,在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");
当我使用绝对路径时,它给了我错误。然而,当我使用可执行文件所在的目录时,它的启动很好。下面是一个C#示例
使用OpenQA.Selenium.Chrome;
公共类ChromeOptionsWithPrefs:ChromeOptions
{
公共字典prefs{get;set;}
}
公共静态void Start()
{
var options=new ChromeOptionsWithPrefs();
期权。附加条款(“隐姓埋名”);
使用(IWebDriver驱动程序=新的ChromeDriver(@“C:\FilePath\”,选项))
{
//进行测试
driver.Navigate().gotour(@)http://www.google.com");
driver.Quit();
}
}
我只是使用prefs不在运行测试的任何机器上存储任何数据。它不是必需的,但是您可以通过它传递一些有趣的选项 是的,我的同事尝试了绝对路径,但它仍然无法神秘地工作。但通常,如果我给它错误的路径,它会给我一个不同的异常,例如“.exe不可用”。axidus1989,您是否尝试过在Amith提到的chromdriver的路径中使用双斜杠//而不是单斜杠/?我认为这应该行得通。我在windows中使用的java将/'转换为\\,所以这不应该是导致问题的原因,但我会让我的同事尝试一下,当通过dbl单击chromedriver.exe直接执行chromedriver.exe时会发生什么?你有什么错误吗?它只是说在cmd窗口中启动驱动程序。在那之后,我用Java编写代码,所以在表面上尝试了一下之后,它给了我一个错误,即可执行文件是一个目录,因此我认为这不起作用。只是意识到她没有使用最新版本。我会给她留张便条看看这是否能解决问题
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();
}
}