社区首页 >问答首页 >我能用Selenium处理多个modalDialog吗?

我能用Selenium处理多个modalDialog吗?
EN

Stack Overflow用户
提问于 2017-01-06 00:30:40
回答 1查看 241关注 0票数 0

我为使用ModalDialog窗口的旧应用程序编写了Selenium测试。我知道如何处理一个ModalDialog:

  1. 在打开ModalDialog之前,我称之为js -以将window pro ModalDialog更改为经典窗口: ((IJavaScriptExecutor) _driver).ExecuteScript("window.showModalDialog = window.open;");
  2. 打开ModalDialog后,我切换到该窗口,我可以处理它: 公共静态void SwitchToWindow(IWebDriver _driver,String url) { string parentWindowHandle = _driver.CurrentWindowHandle;IWebDriver弹出=空;var windowIterator = _driver.WindowHandles;foreach (var windowHandle in windowIterator) { popup = _driver.SwitchTo().Window(windowHandle);if (popup.Url.Contains(url)) {以外;}

但是,如果我想用第二个ModalDialog (所以我现在在第三个窗口)来做这件事,我就有了这个问题:

抛出异常: OpenQA.Selenium.NoSuchElementException:无法找到元素by: By.Id: btnClearSearchName

(在Firefox窗口中:向页面发送请求、传输内容、读取内容),所以Selenium显然找不到元素,因为页面没有加载。

如果我之前试图打开没有JS执行器的第三个窗口,它将显示以下错误:

抛出异常: System.Reflection.TargetInvocationException:调用的目标抛出了异常。-> OpenQA.Selenium.WebDriverException: 60秒后向远程WebDriver服务器请求URL http://localhost:7057/hub/session/c7e75043-9605-4f7c-80ac-233803527709/element/%7B7664f1ae-9c42-4de6-9e16-34fede6a9e26%7D/click超时。-> System.Net.WebException:操作在System.Net.HttpWebRequest.GetResponse()处超时

我在FireFox 45.6.0中使用Selenium v3.0.1。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2017-01-06 00:48:06

为了能够处理下一个窗口,您应该将焦点切换回默认内容

代码语言:javascript
代码运行次数:0
复制
_driver.SwitchTo().DefaultContent();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41501776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文