我正在一个 Web 应用程序上运行 Selenium 2.41 的集成测试,该应用程序的控制台是用 Apache Wicket 6 开发的,我创建了一个 Selenium Firefox Web 驱动程序的实例:
protected WebDriver seleniumDriver = new FirefoxDriver();
我有一个页面调用著名的 Wicket ModalWindow,特别是如果单击一个按钮,它会显示 odal 窗口页面以编辑或创建某些内容。模态窗口有两个输入文本字段和一个保存按钮。使用 Selenium,我试图在这些文本字段中输入一些内容,但我只能访问模式窗口,所以:
seleniumDriver.findElement(By.xpath("//a[contains(text(),'Create new item')]")).click();
然后硒网络驱动程序控制卡在主页上,所以(按照一些互联网示例)我写了这段代码来“切换”打开模式窗口上的控制:
//Store the current window handle
String parentWindow = seleniumDriver.getWindowHandle();
// switch to configuration modal window
for (String winHandle : seleniumDriver.getWindowHandles()) {
seleniumDriver.switchTo().window(winHandle);
}
WebDriverWait webDriverWaitHalfMinModal = new WebDriverWait(seleniumDriver, 10L);
webDriverWaitHalfMinModal.until(ExpectedConditions.presenceOfElementLocated(By.
xpath("//input[@name='key:textField']")));
// do something in modal window
//Close the new window, if that window no more required
seleniumDriver.close();
//Switch back to original browser (parent window)
seleniumDriver.switchTo().window(parentWindow);
我也试过:
seleniumDriver.switchTo().activeElement();
和
seleniumDriver.switchTo().alert();
但是没有办法让它工作,实际上窗口句柄列表只有 1 个元素,主页面,而不是两个元素(主页面和模式页面),并且无法在打开的模式窗口中找到文本字段按钮按下。我指出我的其余代码都在工作,我不能只使用模态窗口。所以我的问题是:如何使用 Selenium 2.41 管理 APACHE WICKET 6 模态窗口?有没有办法将控制从主页切换到 APACHE WICKET 6 模式窗口?