WebDriver: Как переключаться между окнами (C#)

Переключение между окнами.

Важно знать, что окна не являются элементами страницы. Работая с окнами мы обращаемся к объектам операционной системы. Для перехода к требуемому окну нужно знать его идентификатор (WindowHandle). Переключиться к окну в Selenium можно используя команду SwitchTo().Window(windowName):

1
2
3
4
5
        public void SwitchToWindow(string windowName)
        {
            Trace.WriteLine("Switch to the window '" + windowName + "'", "Document");
            _driver.SwitchTo().Window(windowName);
        }
        public void SwitchToWindow(string windowName)
        {
            Trace.WriteLine("Switch to the window '" + windowName + "'", "Document");
            _driver.SwitchTo().Window(windowName);
        }

Для того, чтобы получить идентификатор текущего окна, нужно использовать метод GetCurrentWindowHandle:

1
2
3
4
5
6
7
8
9
        public string GetCurrentWindowHandle
        {
            get
            {
                Trace.WriteLine("Get the current window handle", "Document");
                var currentWindowHandle = _driver.CurrentWindowHandle;
                return currentWindowHandle;
            }
        }
        public string GetCurrentWindowHandle
        {
            get
            {
                Trace.WriteLine("Get the current window handle", "Document");
                var currentWindowHandle = _driver.CurrentWindowHandle;
                return currentWindowHandle;
            }
        }

Команда GetWindowHandles используется для получения списка идентификаторов всех открытых окон браузера.

1
2
3
4
5
6
7
8
9
        public ReadOnlyCollection<string> GetWindowHandles
        {
            get
            {
                Trace.WriteLine("Gets the window handles of open browser windows", "Document");
                var windows = _driver.WindowHandles;
                return windows;
            }
        }
        public ReadOnlyCollection<string> GetWindowHandles
        {
            get
            {
                Trace.WriteLine("Gets the window handles of open browser windows", "Document");
                var windows = _driver.WindowHandles;
                return windows;
            }
        }

Иногда при переключении окон требуется установка ожидания. Также не забывайте после закрытия текущего окна переключаться на новое. В обратном случае Selenium вернет ошибку NoSuchWindowException.