Вы можете попробовать использовать метод driver.Quit, чтобы закрыть родительское окно, а затем создать новый экземпляр InternetExplorerDriver, чтобы открыть дочернее окно. При использовании этого метода кажется, что нет необходимости переключать windows. Если я неправильно понимаю вашу проблему, пожалуйста, дайте мне знать свободно.
Разница между драйвером. Количество и драйвер. Закройте методы, как показано ниже:
driver.close () Команда используется для закрытия текущего окна браузера, имеющего фокус. Если открыт только один браузер, то вызов driver.close () завершает весь сеанс браузера.
Команда driver.quit () , которая вызывает метод driver.dispose, будет Поворот закрывает все браузеры windows и завершает сеанс 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();
}