尝试在Selenium中切换窗口时出错

时间:2016-03-29 11:40:37

标签: c# selenium selenium-webdriver

我有一个场景,我点击一个按钮,然后弹出一个新窗口。 现在,我在弹出窗口中找不到元素,所以我试图切换到新窗口\弹出。

我尝试过这样做,但收到错误:

_webdriver.SwitchTo().Window("0bd0568d-df1f-4472-b20b-842e03d412bd");

我得到的错误是:

  

NoSuchWindowException:找不到窗口

我通过运行以下命令找到了窗口ID:

foreach (string handle in _webdriver.WindowHandles)
{
    string popup = _webdriver.SwitchTo().Window(handle).ToString();
}  

2 个答案:

答案 0 :(得分:1)

每次打开窗口时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);
    }
}

答案 1 :(得分:0)

窗口句柄的字符串值在运行时动态生成,因此每次运行测试时都会不同。

您应该在driver.CurrentWindowHandle中查找driver.WindowHandles,然后切换到下一个bool bFound = false; foreach (string windowHandle in driver.WindowHandles) { if (bFound) { driver.SwitchTo().Window(windowHandle); break; } bFound = windowHandle == driver.CurrentWindowHandle; } 。虽然在Opera或Android上进行测试时可能会出现问题。

   js:    
   $('#biography').keyup(function () {
   var words = this.value.match(/\S+/g).length;
   $('#count').html('Words Count:'+words);
   });
  HTML:

 <div id="count"></div>