我有一个测试用例,要求我使用IE。输入URL时,它将导航到新的会话窗口,该窗口由lanID授权,并自动关闭父窗口。因此,我无法切换到新打开的窗口。
org.openqa.selenium.NoSuchWindowException:当前聚焦的窗口已关闭。
您可以尝试使用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();
}
InternetExplorerOptions选项=新的InternetExplorerOptions();options.setPageLoadStrategy(PageLoadStrategy.NONE);
关于IE。我从IE选项中处理了它。有效。