是否可以将Webdriver切换到新的会话,以自动打开新窗口并关闭父窗口?

问题描述 投票:0回答:2

我有一个测试用例,要求我使用IE。输入URL时,它将导航到新的会话窗口,该窗口由lanID授权,并自动关闭父窗口。因此,我无法切换到新打开的窗口。

org.openqa.selenium.NoSuchWindowException:当前聚焦的窗口已关闭。

internet-explorer switch-statement window
2个回答
0
投票

您可以尝试使用driver.Quit方法关闭父窗口,然后创建一个新的InternetExplorerDriver实例以打开子窗口。通过使用此方法,似乎不需要切换窗口。如果我误解了您的问题,请随时告诉我。

driver.Quit和driver.Close方法之间的区别如下:

driver.close()命令用于关闭当前具有焦点的浏览器窗口。如果只有一个浏览器打开,则调用driver.close()会退出整个浏览器会话。

driver.quit()命令调用driver.dispose方法,它将关闭所有浏览器窗口并终止WebDriver会话。如果我们在程序末尾不使用quit(),WebDriver会话将无法正确关闭。

请检查以下示例:

    private const string URL = @"https://dillion132.github.io/login.html";
    private const string IE_DRIVER_PATH = @"D:\Downloads\webdriver\IEDriverServer_x64_3.14.0";  // where the Selenium IE webdriver EXE is.
    static void Main(string[] args)
    {
        InternetExplorerOptions opts = new InternetExplorerOptions() { InitialBrowserUrl = URL, IntroduceInstabilityByIgnoringProtectedModeSettings = true, IgnoreZoomLevel=true };

        //create a webdriver to open parent window. after doing something, close the window.
        using (var driver = new InternetExplorerDriver(IE_DRIVER_PATH, opts))
        {
            driver.Navigate(); 

            Thread.Sleep(3000);
            var txtname = driver.FindElementById("txtname");
            txtname.SendKeys("BBB");

            var txtpass = driver.FindElementById("txtpassword");
            txtpass.SendKeys("123");

            var submit = driver.FindElementById("Submit1");
            submit.Click(); 
            driver.Quit(); 
        }

        InternetExplorerOptions opts2 = new InternetExplorerOptions() { InitialBrowserUrl = "https://www.bing.com", IntroduceInstabilityByIgnoringProtectedModeSettings = true, IgnoreZoomLevel = true };
        //create another window.
        using (var driver = new InternetExplorerDriver(IE_DRIVER_PATH, opts2))
        {
            driver.Navigate(); 
            Thread.Sleep(3000); 
        }

        Console.ReadKey();

    }

0
投票

InternetExplorerOptions选项=新的InternetExplorerOptions();options.setPageLoadStrategy(PageLoadStrategy.NONE);

关于IE。我从IE选项中处理了它。有效。

© www.soinside.com 2019 - 2024. All rights reserved.