Как ждать определенного события на странице
Общее описание
Каждый раз, когда БАС выполняет какое-либо действие, нужно определить, когда оно закончится.
Большинство времени БАС это делает за вас, но иногда это нужно делать явно.
Например, если используется действие «Загрузка», БАС будет ждать, пока страница будет полностью загружена, включая все изображения и скрипты, и только потом перейдет к выполнению сценария дальше.
Но, если скрипт нажимает на кнопку, непонятно, когда действие можно считать выполненным, в тот момент, когда загрузится новая страница, или когда определенным образом изменится содержание текущей.
Вы можете использовать функции ожидания, чтобы подсказать БАС, когда она должна выполнять сценарий дальше.
Обратите внимание, что когда вы используете действия из меню элемента, добавлять функции ожидания не обязательно, поскольку БАС сама будет ждать появления заданного элемента на странице.
Структура функций ожидания
Существуют 5 функции ожидания, одна из них действие «Сон».
Действие «Сон» говорит само за себя, но другие нуждаются в пояснении:
У каждой функции ожидания есть условие, которое проверяется каждую секунду, если условие выполняется, функция ожидание заканчивает работу.
Если условие не выполняется на протяжении 2 минут, функция ожидания завершит поток с содержательным сообщением об ошибке.
Следующий туториал показывает как загрузить текст на гитхаб с помощью БАС:
Давайте проанализируем видео.
В первой части руководства(без функций ожидания) БАС нажимает на кнопку и сразу же продолжает выполнение сценария.
Следующее действие «Текущий Url». Поскольку текст еще не загружен, ссылка будет не правильной.
Во второй части руководства(с функцией ожидания) БАС нажимает на кнопку и ожидает, пока загружаемый текст не появится на странице. Появление этого текста означает, что кнопка отработала и уже можно выполнять сценарий дальше.
Типы функций ожидания
Существует 4 типа функций ожидания: «Ждать Загрузки Url», «Ждать адреса браузера», «Ждать текст», «Ждать css».
«Ждать Загрузки Url» - ждет, пока некоторый урл не будет загружен во время работы сценария. Это может быть картинка, json, xml, запрос к серверному апи, что угодно.
«Ждать адреса браузера» - ждет, пока текущий урл не будет содержать заданное значение.
«Ждать текст» - ждет пока код страницы не будет содержать заданное значение.
«Ждать css» - ждет пока на странице не появится элемент с заданным css. Это действие очень удобно использовать через элемент контекстного меню «Ждать Появления Элемента». Действие «Ждать Появления Элемента» будет ждать пока элемент, на который был произведен клик мышкой не будет существовать на странице.
Нестандартные функции ожидания
Вы можете создать функцию ожидания самостоятельно.
Рассмотрим такой пример: вы нажимаете на кнопку «проверить почту», и хотите создать функцию ожидания, которая ждет одно из 2 событий: на странице отображается сообщение об ошибке или отображается сообщение об успехе. Вы можете достигнуть этого используя такой подход:
- Используйте действие «While» с параметром «true», чтобы создать цикл.
- Завершите поток если переменная CYCLE_INDEX больше 30.
- Выполните действие «Сон» на 1 секунду. Шаг 2) и 3) означают, что скрипт готов ждать до 30 секунд.
- Проверьте отображается ли сообщение об ошибке, если так, то используйте действие «Fail», чтобы завершить поток.
- Проверьте отображается ли сообщение об успехе, если так, то используйте действие «Break», чтобы прервать цикл.
Единственным отличием от стандартных функций ожидания является то, что функция ожидает сразу два условия. В случае, если отображается сообщение об ошибке, функция не будет ждать 2 минуты, как стандартная, а сразу завершит выполнение.
Видео, в котором показывается создание нестандартных функций ожидания: