Задать вопрос
Legalas61
@Legalas61
Студент

Почему Selenium webDriver не может найти элемент на новой странице?

goButtomStart.Click();// Открываем новое окно
Brauser.SwitchTo().Window(Brauser.WindowHandles[1]);//переключаемся на него
System.Console.WriteLine(Brauser.Title + Brauser.Url);//Title и Url его

 //Поиск на новом окне
IWebElement cl = Brauser.FindElement(By.LinkText("Забыли пароль?")); //cl==null, элемент не найдет


Почему не получается найти элемент? Если запускаться сразу по URL данной странице, то код работает. Я неправильно переключаюсь с основной страницы на эту?
  • Вопрос задан
  • 2160 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@netW0rm
Возможно проблема в том, что страница открывается через клик, и вебдрайвер не ждет завершения загрузки страницы и продолжает выполнять код, но элемент еще не "нарисовался". Сделай паузу перед поиском элемента
Ответ написан
EreminD
@EreminD
Кое-что умею
адрес страницы в студию!
вообще, действительно, возможно не дождидается загрузки элемента (но тут надо страницу вживую увидеть, чтоб точно утверждать)
Если так, используйте ожидания. Неправильный, но простой путь: Thread.Sleep(3000);
Правильный путь - что-то типа:
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("locator")));


И вот еще:
если вам нужно проверить, что элемент становится доступным именно по клику на кнопку или какому-то действию (т.е. реакция на действия пользователя), то ок.
Но если вам просто нужно добраться до какого-то места на странице - старайтесь использовать переходы по URL. Так обеспечивается стабильность.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы