我遇到了Java / Selenium的问题,我用这行创建了一个IE驱动程序:
driver = new InternetExplorerDriver(功能)
然后我在第一步def中使用driver.get(" somepage")引用它。这很好用。然后我单击一个按钮并移动到另一个页面,该页面工作正常(浏览器移动页面)。但是,在我的第二步定义中,我试图这样做:
String test = driver.getCurrentUrl();
System.out.println(test);
assert(test.equals(url));
IntelliJ只是一直在勾选,执行永远不会完成。我想一旦我离开第一页,它就不会识别我在第一步def中创建的网页驱动程序实例,而且我无法引用页面上的任何元素。是否缺少将webdriver实例从一个stepdef传递到另一个stepdef所需的任何内容,或者默认情况下它是否应该是普遍可访问的?我在代码中没有做任何事情来杀死实例。提前谢谢。
所以在src \ main \ java \ domain \ DriverManager中,我有:
public void openBrowser() {
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "IE");
capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
System.setProperty("webdriver.ie.driver", "C:\\SeleniumFiles\\IEDriverServer.exe");
/*
Create the ie instance and navigate to page
*/
driver = new InternetExplorerDriver(capabilities);
//driver.get("https://conditions-test.hca.local/home");
}
然后在我的stepdef中,我引用了webdriver实例:
@Given("^I navigate to the conditions home page$")
public void navigateHome() {
driver.get("www.google.com");
System.out.println("Logging on to google as Joe Bloggs");
String test = driver.getCurrentUrl();
assert(test.equals("www.google.com"));
}
失败的部分如下。这是一个单独的步骤defs文件到上面的参考:
@Then("^I should be on the (.*) page$")
public void checkURL(String url) {
String test = driver.getCurrentUrl();
System.out.println(test)
System.out.println(test);
assert(test.equals(url));
}
转轮文件只是在左下角勾选,但我最终(半小时后左右!)得到此错误:
org.openqa.selenium.NoSuchWindowException:无法获取浏览器(警告:服务器未提供任何堆栈跟踪信息)