微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Webdriver,CSharp,C# – 无法在窗口之间切换

我试图在C#中使用最新版本的webdriver切换窗口时遇到困难.

我有一个基本窗口,当我点击一个按钮时,它会打开一个新窗口.

此按钮的目标代码如下所示.

window.open(uri,"displayPage"," width=1200,scrollbars=yes,resizable = yes,toolbar =  no,menubar =  no");

我使用下面提到的代码来定位新窗口

string BaseWindow = _driver.CurrentwindowHandle;

   ReadOnlyCollection<string> handles = _driver.WindowHandles;

    foreach (string handle in handles)
    {

        if (handle != BaseWindow)
        {
            _driver.SwitchTo().Window(handle).Title.Equals("displayPage");

        }
    }
}

从上面可以看出,我正在使用基本窗口中的目标标题切换到窗口.这似乎不起作用.

然后我注意到打开的窗口的标题不同,它是“显示 – 交易页面

然后我将代码修改为此

string BaseWindow = _driver.CurrentwindowHandle;

       ReadOnlyCollection<string> handles = _driver.WindowHandles;

        foreach (string handle in handles)
        {

            if (handle != BaseWindow)
            {
                _driver.SwitchTo().Window(handle).Title.Equals("display - Transaction Page");

            }
        }
    }

仍然没有运气.

有趣的是,我没有收到任何错误,说“未找到窗口”.

问题是,当我尝试点击新打开的页面上的元素时,我得到一个NoSuchElementException,这意味着新打开的窗口尚未被定位.

有任何想法吗?

问候,

哈桑

解决方法

一旦窗口更改为窗口,您应该中断循环,否则它将始终切换到上次打开的窗口:

foreach (string handle in handles) {
 if (handle != BaseWindow) {
  if(_driver.SwitchTo().Window(handle).Title.Equals("display - Transaction Page")) 
    break;
  }
}

您可以尝试使用Contains而不是相等,它将简化窗口搜索

_driver.SwitchTo().Window(handle).Title.Contains("display");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐