【发布时间】:2015-03-02 12:16:37
【问题描述】:
我已经搜索并搜索了这个问题的答案。我正在使用 Selenium Webdriver 和 C# 在 IE8 中进行测试。在测试的某个时刻,我需要单击一个按钮,然后会打开一个新的应用程序窗口,其中包含需要填写的表格才能继续测试。
我试过了:
driver.switchTo().Window(driver.WindowHandles[0]);
driver.switchTo().Window(driver.WindowHandles[1]); //this one usually returns and error
driver.switchTo().Window(driver.WindowHandles.Last());
我也试过了
foreach(String handle in driver.WindowHandles)
{
driver.switchTo().Window(handle);
//do things here
}
每一个都失败了,当我将句柄名称写入控制台时,无论我尝试做什么,输出都是相同的窗口名称。有人知道我如何获得新窗口吗?
补充问题:
感谢@Saifur 提供了使用 PopupWindowFinder 的新方向。
这是我迄今为止尝试过的
string currentWindow = driver.CurrentWindowHandle;
PopupWindowFinder finder = new PopupWindowFinder(driver);
string popWindow = finder.Click(driver.FindElementById("Element"));
driver.SwitchTo().Window(popWindow);
所以这应该是单击将开始弹出事件的元素,然后开关应将其放置在弹出窗口上,以便我可以继续测试。这是现在的问题。当Element被finder点击时,我正在测试的应用程序会创建一个弹出窗口,然后关闭该弹出窗口,然后出现另一个弹出窗口,然后关闭,最后出现我需要测试的实际应用程序,并且是当前焦点在监视器上或启动所有这一切的初始页面的后面。
那么我怎样才能进入我需要测试的应用程序窗口?我试图切换到似乎试图将其跳转到应用程序窗口的不同弹出窗口,但这不起作用。提前致谢
【问题讨论】:
-
使用
PopupWindowFinder类,因为您使用的是C#。并且,请参阅我对类似问题的回答 here
标签: c# selenium selenium-webdriver