Перейдите драйвер в открывшемся окне в Selenium на C#
Я написал простой код, чтобы отправить форму регистрации с Selenium. Перед отправкой водитель должен зайти с домашней страницы на страницу регистрации.
var firefox = new FirefoxDriver();
firefox.Navigate().GoToUrl("http://mywebsite/home");
Если я печатаю firefox.Title
, он показывает мне название домашней страницы прямо
А на главной странице есть кнопка регистрации. Кнопка Зарегистрироваться ссылка ниже.
<a target="_blank" href="SignUp.jsp">Register Here</a>
Чтобы перейти на страницу регистрации, я написал строку:
firefox.FindElement(By.CssSelector("a[href='SignUp.jsp']")).Click();
После этого драйвер показывает мне страницу регистрации в new window
браузера firefox
. Для навигации водителя к знаку вверх я написал firefox.Navigate();
Теперь Если я напечатаю firefox.Title
, он снова покажет мне заголовок домашней страницы.
Пожалуйста, помогите мне выяснить проблему. Заранее спасибо.
2 ответа:
Использовать
firefox.SwitchTo().Window(handle);
Где
handle
- один из экземпляров, найденных вfirefox.WindowHandles
. Это позволит переключаться между различными экземплярами окна. Вы можете найти дополнительную информацию в документах дляIWebDriver.SwitchTo()
.
Вы в значительной степени хватаетесь за то же самое
title
, так как вы никогда не переключались на недавно открытое окно// Get the current window handle so you can switch back later. string currentHandle = driver.CurrentWindowHandle; // Find the element that triggers the popup when clicked on. IWebElement element = driver.FindElement(By.XPath("//*[@id='webtraffic_popup_start_button']")); // The Click method of the PopupWindowFinder class will click // the desired element, wait for the popup to appear, and return // the window handle to the popped-up browser window. Note that // you still need to switch to the window to manipulate the page // displayed by the popup window. PopupWindowFinder finder = new PopupWindowFinder(driver); string popupWindowHandle = finder.Click(element); driver.SwitchTo().Window(popupWindowHandle); // Do whatever you need to on the popup browser, then... driver.Close(); driver.SwitchToWindow(currentHandle);
И, перейдя в новое окно, вы должны получить новый заголовок.
Однако этот процесс обработки окон совершенно сбивает меня с толку.
Selenium
.Net
привязки предоставляют классPopupWindowFinder для обработки окон.Благодарность Джимевансу за его прекрасные работы и это