Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试在Selenium中切换窗口时出错_C#_Selenium_Selenium Webdriver - Fatal编程技术网

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;
}