【问题标题】:Order of WindowHandles窗口句柄的顺序
【发布时间】:2015-02-28 05:03:21
【问题描述】:

我遇到了一个问题,WebDriver 似乎改变了 WindowHandles 的顺序。在某些情况下,这会导致我们在获取它们后间歇性地关闭错误的。

似乎发生的事情是先前建立的第一个窗口句柄作为后续句柄返回,这导致我的逻辑当然会关闭错误的句柄。

WebDriver 是否应该每次都以相同的顺序返回窗口句柄(从第一个打开的窗口到最后一个窗口的顺序?)。这是我最初的预期,但现在我不太确定。

我还应该提到这个问题现在似乎只发生在 IE 中,但我不确定这是否是一个更普遍的问题。

这是我关闭活动窗口并切换回根窗口的方式。

public void Close()
        {
            //switch to latest window
            string windowName = string.Empty;
            if (_driver.WindowHandles.Count > 1)
            {
               //get 'root' window in list
                windowName = _driver.WindowHandles[0];
                _driver.Close();
                _driver.SwitchTo().Window(windowName);
            }
            else
            {
                _driver.Close();
            }
        }

我们使用的是 WebDriver 2.45(C# 绑定,32 位 IEDriver)。如果有一种方法可以关闭 C# 绑定中的活动窗口,这很可能也可以解决此问题。

【问题讨论】:

    标签: c# selenium selenium-webdriver webdriver


    【解决方案1】:

    根据我的理解,这个弹出窗口处理程序是完全无序的。我记得在 SO 上进行过同样的对话,幸运的是 JimEvans(Selenium 的贡献者之一)插话并澄清了一些因素。我阅读了Selenium .NET 绑定中的PopupWindowFinder 并发现该类可以让您的生活更轻松。 API 是here。然而,整个订单问题是完全复杂且难以处理的。请参阅this 线程。只是不想重新发明轮子。

    【讨论】:

    • 谢谢。我不知道这门课。
    • 没问题,很高兴它有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多