driver.WindowHandles просто передают количество оконных дескрипторов, когда открыты два экземпляра Internet Explorer

Используя Selenium WebDriver, я пытаюсь сделать UI Automation, где я сталкиваюсь с этим сценарием:
Из InternetExplorer1 в моем веб-приложении, когда я щелкаю меню на вкладке, новый экземпляр InternetExplorer2 загружает URL-адрес. Итак, я получаю два IE. Теперь мне нужно переключиться на IE2 и нажать там кнопку выхода. для этого у меня есть код:

[Test]
public void mytest()
{
  Assert.IsTrue(IsOpen());
}

public bool IsOpen()
{
  GoToUrl();// I pass the URL over here and the element is clicked here
  driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(15));
  SwitchWindow();

  return true;
}

//Here I switch the window.
private void SwitchWindow()
{
  IJavaScriptExecutor js = driver as IJavaScriptExecutor;
  var currentWindow = driver.CurrentWindowHandle;
  string currentWindowTitle = (string)js.ExecuteScript("return document.title");
  var availableWindows = new List<string>(driver.WindowHandles);

    foreach (string w in availableWindows)
    {
        if (w != currentWindow)
        {
            //This should switch the window.
            driver.SwitchTo().Window(w);
            //..........................
            //.........More of my automation runs here..........
            //...........................

        }
    }
}

Но список доступных окон просто пропускает один элемент в WindowHandles. Разве не должно считаться два, когда у меня открыты два экземпляра?

1 ответ

Если InternetExplorer2 запускается как новый экземпляр IE, а не как новая вкладка в том же экземпляре IE, я не думаю, что ваш InternetExplorerDriver может его увидеть.

Вы можете попробовать изменить настройки IE, чтобы все запускалось в новой вкладке, а не в новом экземпляре, или написать некоторый код, чтобы получить URL-адрес из нового экземпляра IE и перезапустить его с помощью нового InternetExplorerDriver (мне удалось это сделать успешно с C#, и это работало хорошо, но это может зависеть от того, как работает ваше веб-приложение).

Другие вопросы по тегам