这段代码是:
另一个编辑:想要注意我正在使用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
答案 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");
答案 1 :(得分:0)
webdrivers / chromedriver.exe
我怀疑它找不到chromedriver。您确定这是通往chromedriver.exe
的正确途径吗?
您应该尝试使用绝对路径。
例如C:/Users/Name/Desktop/webdrivers/chromedriver.exe
答案 2 :(得分:0)
Chromedriver.exe
版 2.9 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来不在我运行测试的任何机器上存储任何数据。它不是必需的,但你可以传递一些有趣的选项。