Javascript 我可以用Selenium处理多个modalDialog吗?

Javascript 我可以用Selenium处理多个modalDialog吗?,javascript,c#,selenium,showmodaldialog,Javascript,C#,Selenium,Showmodaldialog,我为使用ModalDialog windows的旧应用程序编写Selenium测试。我知道如何处理一个ModalDialog: 在打开ModalDialog之前,我称之为js-将window pro ModalDialog更改为classic window: ((IJavaScriptExecutor)\u driver.ExecuteScript(“window.showmodaldiallog=window.open;”) 打开ModalDialog后,我切换到该窗口,我可以处理它: pub

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

  • 在打开ModalDialog之前,我称之为js-将window pro ModalDialog更改为classic window:

    ((IJavaScriptExecutor)\u driver.ExecuteScript(“window.showmodaldiallog=window.open;”)

  • 打开ModalDialog后,我切换到该窗口,我可以处理它:

    public static void SwitchToWindow(IWebDriver _driver, string url)
    {
        String parentWindowHandle = _driver.CurrentWindowHandle;
    
        IWebDriver popup = null;
        var windowIterator = _driver.WindowHandles;
    
        foreach (var windowHandle in windowIterator)
        {
            popup = _driver.SwitchTo().Window(windowHandle);
    
            if (popup.Url.Contains(url))
            {
                break;
            }
        }
    }
    
  • 但如果我想用第二个ModalDialog实现这一点(所以我现在在第三个窗口中),我会遇到以下问题:

    引发异常: OpenQA.Selenium.NoSuchElementException:未能通过以下方式找到元素:by.Id:btnClearSearchName

    (在Firefox窗口中闪烁:向发送请求、传输内容、读取内容)因此很明显Selenium找不到元素,因为页面未加载

    如果我以前尝试在没有JS executor的情况下打开第三个窗口,它会显示以下错误:

    引发异常: System.Reflection.TargetInvocationException:调用的目标已引发异常。-->OpenQA.Selenium.WebDriverException:对远程WebDriver服务器的URL HTTP请求在60秒后超时。-->System.Net.WebException:操作已超时 在System.Net.HttpWebRequest.GetResponse()中

    我在FireFox 45.6.0中使用Selenium v3.0.1


    谢谢你的帮助

    为了能够处理下一个窗口,您应该使用

    _driver.SwitchTo().DefaultContent();
    

    我应该把它放在哪里?现在我在第一模态中,它看起来是这样的:1。JSExecutor 2将模式更改为窗口。单击以打开模式(由于1,现在是窗口。)3。切换到新窗口----第二个模式:-(如果我再次尝试JSExecutor=第二个模式将不会打开)-如果我不尝试JSExecutor并直接打开第二个模式窗口,=超时错误我想你应该尝试在
    中断之前放置一个
    else
    block中的一个执行相同的错误。。在第二个窗口之前使用JSExecutor,它不会打开窗口并闪烁请求。。。没有JSEXECUTOR窗口无法处理。。。