我对 Java/Selenium 有疑问,我在其中使用以下行创建了 IE 驱动程序:
驱动程序 = 新 InternetExplorerDriver(功能)
然后我在第一步定义中使用 driver.get("somepage") 引用它。这工作正常。然后我单击一个按钮并移动到另一个页面,它工作正常(浏览器移动页面)。但是,在我的第二步定义中,我正在尝试做:
String test = driver.getCurrentUrl();
System.out.println(test);
assert(test.equals(url));
IntelliJ 只是一直在滴答作响,执行永远不会完成。我想一旦我离开第一页,它就无法识别我在第一步 def 中创建的 Web 驱动程序实例,并且我无法引用页面上的任何元素。将 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:无法获取浏览器(警告:服务器未提供任何堆栈跟踪信息)