Общие сведения

ВступлениеПодготовка к запускуАрхитектура платформы TestoПорядок запускаПолитика запуска тестов

Обучающие материалы по Testo для Hyper-V

Часть 1. Самый первый тестЧасть 2. Устанавливаем Ubuntu ServerЧасть 3. Доступ в Интернет из виртуальной машиныЧасть 4. Гостевые дополненияЧасть 5. ПараметрыЧасть 6. КешированиеЧасть 7. Связываем две машины по сетиЧасть 8. ФлешкиЧасть 9. МакросыЧасть 10. Конструкция ifЧасть 11. No snapshotsЧасть 12. Управление мышкойЧасть 13. Импортирование жёстких дисковЧасть 14. JS-селекторыЧасть 15. Циклы

Обучающие материалы по Testo для QEMU

Часть 1. Самый первый тестЧасть 2. Устанавливаем Ubuntu ServerЧасть 3. Гостевые дополненияЧасть 4. ПараметрыЧасть 5. КешированиеЧасть 6. Доступ в Интернет из виртуальной машиныЧасть 7. Связываем две машины по сетиЧасть 8. ФлешкиЧасть 9. МакросыЧасть 10. Конструкция ifЧасть 11. No snapshotsЧасть 12. Управление мышкойЧасть 13. Импортирование жёстких дисковЧасть 14. JS-селекторыЧасть 15. ЦиклыЧасть 16. Макросы с объявлениями

Спецификация языка

Общая структура скриптовых файловБазовые конструкции языкаOбъявление виртуальной машиныОбъявление виртуального флеш-накопителяОбъявление виртуальной сетиПараметрыОбъявление тестовМакросыДействия с виртуальными машинамиДействия с мышкойПоиск изображений на экранеДействия с виртуальными флеш-накопителямиУсловияЦиклыСписок идентификаторов клавиш

Запросы на языке Javascript

Общая концепция построения JS-селекторовВстроенные глобальные функции JavascriptИсключенияКласс TextTensorКласс ImgTensorКласс Point

Общая концепция построения JS-селекторов

JS-селекторы могут пригодиться в тех случаях когда вам необходимо выполнить достаточно сложное перемещение курсора мышки или дождаться на экране события, которое не получается описать простым способом. По-сути, JS-селекторы позволяют Вам расширять стандартные возможности Testo-lang и писать свою собственную сколь угодно сложную логику по поиску событий на экране.

JS-селекторы можно использовать в двух случаях:

  1. Чтобы задать сложное событие на экране для ожидания в команде wait и выражении check.
  2. Чтобы указать специфическое место назначения для перемещения курсора мышки в действиях mouse.

JS-селекторы начинаюстся с ключевого слова js, после которого внутри строки необходимо расположить Javascript-сниппет (код). Внутри сниппета вы можете обращаться к встроенным функциям, которые позволяют получить информацию о содержимом экрана на текущий момент.

Если JS-селектор оформлен в однострочной строке, то необходимо экранировать двойные кавычки, использующиеся внутри самого скрипта. Если же JS-селектор оформлен с использованием многострочных строк, то экранировать двойные кавычки не нужно.

Существуют некоторые различия в оформлении JS-селекторов для ожидания событий на экране и для передвижения курсора мышки.

JS-селекторы для wait и check

При использовании JS-селекторов в действиях wait и условиях check эти селекторы должны возвращать булево значение: true или false.

Если возвращается true, это означает что нужное событие на экране наступило, и ожидание (или поверку) необходимо завершить. В этом случае событие wait успешно завершается, а выражение check возвращает true.

Если возвращается false, это означает, что нужное событие на экране ещё не наступило, и требуется продолжать ожидание (или проверку). В этом случае событие wait или выражение check выполнит ожидание на время, указанное в time_interval, а затем снова попробует обработать JS-селектор с новым скриншотом экрана виртуальной машины.

Если время ожидания (или проверки) превышает время, указанное в timeout, действие wait генерирует ошибку и тест завершается неудачно. Выражение check в этом же случае возвращает значение false.

JS-селекторы в действиях mouse

При использовании JS-селекторов в действиях mouse эти селекторы должны возвращать точку: объект (любого класса, не важно какого) со свойствами x и y, которые имеют числовые значения.

Возвращение точки означает, что JS-селектор нашёл нужное место, куда необходимо передвинуть курсор мышки, поэтому действие mouse прекращает ожидание и выполняет перемещение курсора в заданную точку.

Если JS-селектор пока не готов вернуть точку назначения (например, селектор дожидается события на экране и это событие ещё не наступило), то внутри селектора следует бросить исключение ContinueError, которое заставит действие mouse подождать немного (количество времени ожидания в настоящий момет не регулируется) и попробовать обработать JS-селектор ещё раз уже с новым скриншотом.

Если действие mouse содержит JS-селектор с исключением ContinueError и время выполнения этого действия превышает таймаут, указанный в действии mouse ( по умолчанию - 1 минута), то действие завершится с ошибкой Wait timeout.