Webdriver,CSharp,C# – 无法在窗口之间切换
发布时间:2020-12-15 17:25:39 所属栏目:百科 来源:网络整理
导读:我试图在C#中使用最新版本的webdriver切换窗口时遇到困难. 我有一个基本窗口,当我点击一个按钮时,它会打开一个新窗口. 此按钮的目标代码如下所示. window.open(uri,"DisplayPage"," width=1200,scrollbars=yes,resizable = yes,toolbar = no,menubar = no");
我试图在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"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |