C# 尝试在Selenium中切换窗口时出错
我有一个场景,我点击一个按钮,然后弹出一个新窗口。 现在,我在弹出窗口中找不到元素,所以我尝试切换到新窗口\弹出窗口 我尝试过这样做,但出现了一个错误:C# 尝试在Selenium中切换窗口时出错,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我有一个场景,我点击一个按钮,然后弹出一个新窗口。 现在,我在弹出窗口中找不到元素,所以我尝试切换到新窗口\弹出窗口 我尝试过这样做,但出现了一个错误: _webdriver.SwitchTo().Window("0bd0568d-df1f-4472-b20b-842e03d412bd"); 我得到的错误是: NoSuchWindowException:未找到任何窗口 我通过运行以下命令找到了窗口id: foreach (string handle in _webdriver.WindowHa
_webdriver.SwitchTo().Window("0bd0568d-df1f-4472-b20b-842e03d412bd");
我得到的错误是:
NoSuchWindowException:未找到任何窗口
我通过运行以下命令找到了窗口id:
foreach (string handle in _webdriver.WindowHandles)
{
string popup = _webdriver.SwitchTo().Window(handle).ToString();
}
每次打开窗口时,
WindowHandle
都会更改,所以不能这样指定它。每次要切换时使用循环
此外,SwitchTo().Window(handle)
返回IWebDriver
实例,而不是窗口id。为此,请使用driver.CurrentWindowHandle
// get the current active window
string parentHandle = driver.CurrentWindowHandle;
// open new window
// switch to the new window
foreach (string handle in driver.WindowHandles)
{
if (!handle.Equals(parentHandle))
{
driver.SwitchTo().Window(handle);
}
}
窗口句柄的字符串值在运行时动态生成,因此每次运行测试时都会有所不同 您应该在
driver.WindowHandles
中查找driver.CurrentWindowHandle
,然后切换到下一个。尽管在Opera或Android上测试时可能会出现问题
bool bFound = false;
foreach (string windowHandle in driver.WindowHandles)
{
if (bFound)
{
driver.SwitchTo().Window(windowHandle);
break;
}
bFound = windowHandle == driver.CurrentWindowHandle;
}