C# 无法使用Selenium Webdriver使用switchTo()切换到新窗口

C# 无法使用Selenium Webdriver使用switchTo()切换到新窗口,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我一直在寻找这个问题的答案。我正在IE8中使用SeleniumWebDriver和C#进行测试。在测试的某个时刻,我需要单击一个按钮,然后打开一个新的应用程序窗口,其中包含需要填写的表格,以便继续测试 我试过: driver.switchTo().Window(driver.WindowHandles[0]); driver.switchTo().Window(driver.WindowHandles[1]); //this one usually returns and error drive

我一直在寻找这个问题的答案。我正在IE8中使用SeleniumWebDriver和C#进行测试。在测试的某个时刻,我需要单击一个按钮,然后打开一个新的应用程序窗口,其中包含需要填写的表格,以便继续测试

我试过:

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使用PopupIndowFinder的新方向

到目前为止,这就是我用它试过的

string currentWindow = driver.CurrentWindowHandle;
PopupWindowFinder finder = new PopupWindowFinder(driver);
string popWindow = finder.Click(driver.FindElementById("Element"));
driver.SwitchTo().Window(popWindow);
因此,这应该是点击将开始弹出事件的元素,然后开关应将其放置在弹出窗口上,以便我可以继续测试。现在的问题是。当
finder单击
元素
时,我正在测试的应用程序会创建一个弹出窗口,然后关闭该弹出窗口,然后出现另一个弹出窗口,然后关闭,最后出现我需要测试的实际应用程序,该应用程序是监视器上的当前焦点或启动所有这些操作的初始页面后面


那么,我如何进入需要测试的应用程序窗口?我尝试切换到不同的弹出窗口,尝试将其跳转到应用程序窗口,但没有成功。提前感谢

这可能会有帮助,它很有用:

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;

//To open new tab
js.ExecuteScript("window.open()");
ArrayList tabs = new ArrayList(driver.WindowHandles);

//Switch driver to new tab
driver.SwitchTo().Window(driver.WindowHandles[1]);

//Close new tab
driver.Close();

//Switch driver to old tab
driver.SwitchTo().Window(driver.WindowHandles[0]);

使用
PopupWindowFinder
类,因为您使用的是
C
。看我对一个类似问题的回答