0

我对 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:无法获取浏览器(警告:服务器未提供任何堆栈跟踪信息)

4

0 回答 0