Opera - driver.WindowHandles返回错误的计数

时间:2016-04-01 09:46:31

标签: c# selenium selenium-webdriver opera

在我的方案中,我正在验证点击链接是否导航到另一个页面(验证页面标题)。 IE FF chrome 按预期返回2但 Opera 返回4.我没有任何运行测试时打开的其他Opera实例。它点击链接并打开所需页面,但WindowHandles返回4.

代码:

string BaseWindow = Drivers._driverInstance.CurrentWindowHandle;
Drivers._driverInstance.SwitchTo().Frame(Drivers._driverInstance.FindElement(By.ClassName("iframe-fix")));
if (Drivers._driverInstance.GetType().Name.ToString() == "InternetExplorerDriver")
{
    IJavaScriptExecutor js = (IJavaScriptExecutor)Drivers._driverInstance;
    js.ExecuteScript("arguments[0].click();", Drivers._driverInstance.FindElement(By.LinkText("Professional Services.")));
}
else
{
    Drivers._driverInstance.FindElement(By.LinkText("Professional Services.")).Click();
}
    System.Collections.ObjectModel.ReadOnlyCollection<string> handles = Drivers._driverInstance.WindowHandles;
    if (handles.Count == 2)
    {
      foreach (string handle in handles)
      {
         if (handle != BaseWindow)
         {
            string title = Drivers._driverInstance.SwitchTo().Window(handle).Title;
            Assert.AreEqual("title of the page", Drivers._driverInstance.Title);
          }
      }
     }
    else
    {
        Assert.Fail("WindowHandles returns " + handles.Count + " instead of 2");
    }
Drivers._driverInstance.SwitchTo().Window(BaseWindow);

有人可以建议为什么Opera会返回4而不是2。

感谢。

2 个答案:

答案 0 :(得分:1)

Opera驱动程序没有返回正确数量的句柄。该问题已经报告给该项目,但似乎不再维护该项目:

https://github.com/operasoftware/operachromiumdriver/issues/15

答案 1 :(得分:0)

我遇到了与Opera驱动程序相同的事情,加上(如果我没记错),var trace1 = { x: [1, 2, 3, 4], y: [10, 15, 13, 17], type: 'scatter' }; var trace2 = { x: [1, 2, 3, 4], y: [16, 5, 11, 9], type: 'scatter' }; var data = [trace1, trace2]; Plotly.newPlot('myDiv', data); 属性也不起作用。

解决方法:

CurrentWindowHandle