Дождаться загрузки страницы C# Selenium

132
11 января 2020, 18:10

Программа заходит на сайт, ищет кнопку авторизации, вводит логин и пароль, нажимает Enter, а далее необходимо дождаться, пока загрузится новая страница, и уже на ней найти следующую кнопку.

webElement = driver.FindElement(By.ClassName("fancybox"));  //  Находим элемент на станице по имени класса 
webElement.Click();
webElement = driver.FindElement(By.Name("p_login"));  //  Находим поле для ввода логина
webElement.SendKeys(login);  //  Вводим сохраненный логин
webElement = driver.FindElement(By.Name("p_pass"));  //  Находим поле для ввода пароля
webElement.SendKeys(password + OpenQA.Selenium.Keys.Enter);  //  Вводим пароль и нажимаем Enter

Нужно написать какую-то функцию, которая будет ждать загрузки страницы, потому что поиск следующей кнопки сразу выдает исключение. Вот код поиска:

webElement = driver.FindElement(By.PartialLinkText("Преподавателю"));
webElement.Click();
Answer 1

Уверен, что здесь необходимо явное ожидание элемента. Отсюда сразу могу предложить такое (тут, правда, на java, но не вижу большой разницы):

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfAllElements(driver.findElement(By.PartialLinkText("Преподавателю")));
wait.until(ExpectedConditions.presenceOfElementLocated(By.PartialLinkText("Преподавателю")));

Ну а ещё, конечно, полезная статеечка: http://barancev.github.io/slow-loading-pages/

READ ALSO
Название ячейки массива

Название ячейки массива

Как можно назвать ячейку массива не числом, а буквами?

153
Не добавляются записи в БД(MYSQL)

Не добавляются записи в БД(MYSQL)

Код подключения :

138
Как исправить ошибку в ajax?

Как исправить ошибку в ajax?

Файл printerphp, который вносит апдейт в бд

164
Редирект после отправки формы на полную форму

Редирект после отправки формы на полную форму

Имеется форма на главной странице сайта:

149