Встроенные команды мета-языка

URL | URL(“url”[, timeout])

Переход на страницу, возвращает время загрузки страницы. Если адрес страницы не указан, то переход осуществляется на базовый URL (см. CONFIG.BASE_URL)

Аргументы:

  • url - Адрес страницы. Если не указан, то используется CONFIG.BASE_URL
  • timeout - тайм-аут загрузки страницы. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

# Переход страницу https://ya.ru
URL("https://ya.ru")

# Переход страницу https://ya.ru, время перехода на страницу на должно превышать 60 сек.
URL("https://ya.ru") < 60

URL # Переход на базовый URL

DATA(“селектор”, “данные” [, multi_selector], [, clear], [, timeout] [, delay], [, press])

Вводит данные в элемент формы.

Аргументы:

  • селектор - Селектор элемента формы. Если нужно заполнить несколько элементов одними и теми же данными, то можно передать список селекторов.
  • данные - строка для заполнения элемента формы
  • multi_selector - Если равен True, то селектор может указывать на несколько элементов. По умолчанию - False
  • clear - Если равен True, то перед заполнением поле формы будет очищено, иначе данные будут добавлены в конец существующей строки. По умолчанию - True
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT
  • delay - Задержка ввода данных. По умолчанию - 0.0
  • press - Идентификатор клавиши которая будет нажата после завершения ввода данных (см. команду KEY)

Пример:

# Заполняем поле #userName
...
, DATA("#userName", "Вася")
...

# Заполняем поля #userName и #lastname
...
, DATA(["#userName", "#lastname"], "Вася")
...

KEY(“селектор”, “клавиша” [, multi_selector] [, timeout])

Эмулирует нажатие клавиши на элементе. Команда предназначена только для передачи нажатия одной клавиши, для ввода текста используйте команду DATA. Если нужно передать нажатие нескольких клавиш, то для этого используйте список идентификаторов.

Аргументы:

  • Селектор - Селектор элемента.
  • Клавиша - Идентификатор нажимаемой клавиши.
  • multi_selector - Если равен True, то селектор может указывать на несколько элементов. По умолчанию - False
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

В качестве идентификаторов специальных клавиш нужно использовать строки со следующими значениями:

“F1” “F2” “F3” “F4” “F5” “F6” “F7”
“F8” “F9” “F10” “F11” “F12” “NULL” “CANCEL”
“NULL” “CANCEL” “HELP” “BACKSPACE” “TAB” “CLEAR” “RETURN”
“ENTER” “SHIFT” “CONTROL” “ALT” “PAUSE” “ESCAPE” “SPACE”
“PAGE_UP” “PAGE_DOWN” “END” “HOME” “LEFT” “ARROW_LEFT” “UP”
“RIGHT” “DOWN” “INSERT” “DELETE” “SEMICOLON” “EQUALS” “NUMPAD0”
“NUMPAD1” “NUMPAD2” “NUMPAD3” “NUMPAD4” “NUMPAD5” “NUMPAD6” “NUMPAD7”
“NUMPAD8” “NUMPAD9” “MULTIPLY” “ADD” “SEPARATOR” “SUBTRACT” “DECIMAL”
“DIVIDE” “META” “COMMAND” “ZENKAKU_HANKAKU”

Если нужно отправить сочетание нажатия нескольких клавиш, то в качестве идентификатора нужно использовать список строк с идентификаторами клавиш. Например идентификатор [“CONTROL”, “A”] соответствует сочетанию клавиш Ctrl + A.

Пример:

# Поиск текста
....
, DATA("#search", "текст")
, KEY("#search", "ENTER")
...

# выделение всего текста
...
, KEY("#search", ["CONTROL", "A"])
...

CLEAR(“селектор” [, … “селектор n”] [, multi_selector] [, timeout])

Очистка веб-элемента. Снимает выделение с элементов checkbox и select, очищает текстовые элементы.

Аргументы:

  • Селектор - Селектор элемента. Если нужно очистить несколько элементов, то можно указать несколько селекторов.
  • multi_selector - Если равен True, то селектор может указывать на несколько элементов. По умолчанию - False
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

# Очистка элемента поиска
...
, CLEAR("#search")
...

CLICK(“селектор”[, … “селектор n”] [, offset_x] [, offset_y][, multi_selector] [, timeout])

Эмулирует нажатие правой кнопки мыши на элементе. Если поле нажатие открывается новое окно или вкладка браузера, то автоматически переходим на неё.

Аргументы:

  • селектор - Селектор элемента. Если нужно эмулировать последовательность нажатий на нескольких элементах, то можно указать несколько селекторов.
  • offset_x - Смещение точки клика по оси X относительно центра элемента.
  • offset_y - Смещение точки клика по оси Y относительно центра элемента.
  • multi_selector - Если равен True, то селектор может указывать на несколько элементов. По умолчанию - False
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

# Переход на вкладку My Info
...
, CLICK("link::My Info")
...

DOUBLE_CLICK(“селектор”[, … “селектор n”] [, expression] [, timeout])

Эмулирует двойное нажатие правой кнопки мыши на элементе.

Аргументы:

  • селектор - Селектор элемента. Если нужно эмулировать последовательность нажатий на нескольких элементах, то можно указать несколько селекторов.
  • expression - Выражение, если оно вернёт False, то нажатие не будет эмулироваться. По умолчанию - None
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

...
, DOUBLE_CLICK("link::My Info")
...

MOUSE_MENU(“селектор” [, timeout])

Вызывает контекстное меню при помощи эмуляции нажатия правой кнопки мыши.

Аргументы:

  • Селектор - Селектор элемента.
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:


TEST["Buttons"](
    URL("https://demoqa.com/buttons")
    , "You have done a dynamic click"
    , CLICK("Click Me")
    , ONE("#dynamicClickMessage") == "You have done a dynamic click"
    
    , "You have done a right click"
    , MOUSE_MENU("#rightClickBtn")
    , ONE("#rightClickMessage") == "You have done a right click"
    
    , "You have done a double click"
    , DOUBLE_CLICK("#doubleClickBtn")
    , ONE("#doubleClickMessage") == "You have done a double click"
    , tags = "button"
)

HOVER(“селектор” [, timeout])

Эмитирует перемещения курсора мыши на элемент.

Аргументы:

  • Селектор - Селектор элемента.
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

...
, HOVER("#ui-id-5")
...

DND(“селектор 1”, “селектор 2” [, timeout])

Эмитирует перемещение веб элемента мышью.

Аргументы:

  • Селектор 1 - Селектор перемещаемого элемента.
  • Селектор 2 - Селектор элемента на который перемещают элемент с селектором 2
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

TEST["Boxes"](
    URL("https://www.qa-practice.com/elements/dragndrop/boxes")
    , DND("#rect-draggable", "#rect-droppable")
    , ONE("#text-droppable") == "Dropped!"
)

DATA_ATTR(“селектор”, attr, value [, timeout])

Изменяет значение атрибута у веб элемента.

Аргументы:

  • селектор - Селектор элемента.
  • attr - Наименование атрибута.
  • value - Новое значение атрибута.
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

PAUSE | PAUSE(задержка)

Ничего не делает пока не истечёт время задержки.

Аргументы:

  • задержка - Время паузы в секундах. По умолчанию: 1.0

Пример:

...
, PAUSE(5)  # Пауза 5 секунд
, PAUSE     # Пауза 1 секунда
...

PRINT(“сообщение” [, … “сообщение n”])

Выводит в отчёты переданные сообщения. Статус теста не меняется, может быть использоваться для отладки теста.

Аргументы:

  • сообщение - Текст сообщения

Пример:

# Печатает пароль
PRINT("Пароль: ", ONE("#passwd"))

WARNING(“сообщение” [, … “сообщение n”])

Выводит в отчёты переданные сообщения. Статус теста устанавливается в WARNING, если текущий статус выше чем WARNING, то он не меняется.

Аргументы:

  • сообщение - Текст сообщения

Пример:

WARNING("Текущий URL находится в другом домене!")

SCREENSHOT | SCREENSHOT(“селектор”[, … “селектор n”] [, css] [, timeout] )

Добавляет список скриншотов в отсчёт. Если селекторы не указаны, то добавляет скриншот всей страницы. Не обязательный параметр css позволяет добавить таблицу стилей перед созданием скриншота.

Аргументы:

  • селектор - Селектор элемента с которого будет сделан скриншот. Можно указать более одного селектора.
  • css - таблица стилей которая будет применена ко всей страницы перед созданием скриншота.
  • timeout - Время явного ожидания исчезновения элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

...
# Добавляем скриншот всей страницы. Элемент #id_text_area выделен красной рамкой
, SCREENSHOT(css="#id_text_area {border: 5px solid red}")

#  Добавляем скриншот элемента #id_text_area, выделение снято
, SCREENSHOT("#id_text_area", css="#id_text_area {border: none}")
...

NOT(“селектор” [, “атрибут”] [, timeout])

Вызывает ошибку если элемент на который указывает селектор присутствует на странице. Команда проверяет именно отсутствие элемента в DOM, а не только его недоступность пользователю.

Если указан не только селектор, но ещё и атрибут, то команда проверяет исчезновение указанного атрибута у элемента.

Аргументы:

  • селектор - Селектор веб-элемента. Если нужно проверить несколько элементов, то можно передать список селекторов.
  • атрибут - Наименование проверяемого атрибута.
  • timeout - Время явного ожидания исчезновения элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

# Вызовет ошибку если элемент с селектором "#hidden_bar" присутствует на странице
...
, NOT("#hidden_bar")
...

# Вызовет ошибку если атрибут "disabled" не исчезнет в течении 5 секунд.
...
, NOT("#enableAfter", "disabled", timeout=5)
...

COUNT(“селектор” [, displayed] [, timeout])

Подсчёт количества элементов.

Аргументы:

  • селектор - Селектор веб-элемента.
  • displayed - Если установлен в True, то ждём отображения элементов. По умолчанию - True
  • timeout - Время явного ожидания исчезновения элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

# проверка количество строк в таблице.

COUNT("//tr")) == 100

JS(“скрипт”[, аргумент1, аргумент2, …][, timeout][, sync])

Выполнить js-скрипт асинхронно(ASYNC_JS) или синхронно (SYNC_JS). Возвращает результат работы скрипта.

Аргументы:

  • скрипт - код js скрипта.
  • аргументы - аргументы передаваемые скрипту
  • timeout - Именованный аргумент, устанавливает тайм-аут выполнения скриптов. По умолчанию - CONFIG.WAIT_TIMEOUT
  • sync - Синхронное (True) или асинхронное (False) выполнение скрипта. По умолчанию - True

Пример:

# прокрутка содержимого окна до определённой позиции
...
, JS("window.scrollBy(arguments[0], arguments[1])", 0, 1000, timeout=3)
...

SCROLL(“селектор” [, timeout]) | SCROLL(Y [, timeout]) | SCROLL(X, Y [, timeout])

Прокрутка контента.

Аргументы:

  • селектор - Селектор элемента до середины которого нужно прокрутить
  • Y - Количество пикселей для смещения вертикальной прокрутки
  • X, Y - Количество пикселей для смещения вертикальной и горизонтальной прокрутки
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

FRAME | FRAME(“селектор1”[, “селектор2”, …])

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

Команда полезна если необходимо активно работать с несколькими элементами внутри фрейма. Получить доступ к отдельному элементу в фрейме удобнее при помощи селектора FP (см. раздел Основы мета-языка).

Пример:

TEST["nestedframes"](
    URL("https://demoqa.com/nestedframes")
    
    , "Проверка надписи в первом фрейме"
    , FRAME("#frame1")
    , ONE("body") == "Parent frame"
    
    , "Проверка надписи во втором фрейме"
    , FRAME("iframe")
    , ONE("body") == "Child Iframe"
    
    , "Пример с использованием сразу двух селекторов"
    , FRAME
    , FRAME("#frame1", "iframe")
    , ONE("body") == "Child Iframe"
)

DATE | DATE(“формат”)

Константа содержащая текущую дату представленную в соответствии с в заданным форматом. Если формат не задан, то используется - “YYYY-MM-DD”

Аргументы:

Пример:

PRINT("Дата теста "+DATE)

TIME | TIME(“формат”)

Константа содержащая текущее время представленное в соответствии с в заданным форматом. Если формат не задан, то используется - “hh:mm:ss.ms”

Аргументы:

Пример:

# печатаем текущее время
PRINT("Время начала теста "+TIME)

PAGE_URL

Константа содержащая текст ссылки на текущую страницу.

Пример:

# проверка вхождения подстроки "/news" в текущий URL

"/news" > PAGE_URL

PAGE_TITLE

Константа содержащая заголовок страницы.

Пример:

# Печатаем заголовок страницы
PRINT(PAGE_TITLE)

# Выражение проверяет вхождения подстроки "Новости" в заголовок
"Новости" > PAGE_TITLE

PAGE_SOURCE

Константа содержащая HTML код страницы.

Пример:

PRINT(PAGE_SOURCE)

Файлы

CHECK_DOWNLOAD(“name”, quality [, timeout])

Проверяет скаченный файл.

Аргументы:

  • name - имя файла
  • quality - Проверяемая величина.
  • timeout - Максимальное время ожидания скачивания файла. По умолчанию - 30 сек.

В аргумент quality можно передать значения следующих типов:

  • Строка, её значение должно быть равным md5 хешу файла.
  • Целое положительное число, равное размеру файла в байтах.
  • Унарная функция. Ей передаётся путь к скаченному файлу, она должны вернуть True если файл валиден, иначе False.

Пример:

TEST["Загрузка"](
    URL("https://demoqa.com/upload-download")
    , CLICK("#downloadButton")

    , "Проверяем размер файла"
    , CHECK_DOWNLOAD("sampleFile.jpeg", 4096)

    , "Проверяем контрольную сумму"
    , CHECK_DOWNLOAD("sampleFile.jpeg", "24c004606d9c7a2a2f0a4d1b69562c3e")
    , tags="file"
)

import json

def test_file(path):
    return json.load(open(path))["color"] == "Red"

TEST["Пример проверки содержимого json-файла"](
    URL("https://support.oneskyapp.com/hc/en-us/articles/208047697-JSON-sample-files")
    , CLICK("example_1.json")
    , CHECK_DOWNLOAD("example_1.json", test_file)
)

UPLOAD(“селектор”, path [, timeout])

Загрузка файла на сайт.

Аргументы:

  • селектор - Селектор элемента загрузки. Должен иметь тег input и атрибут file
  • path - Путь к загружаемому файлу
  • timeout - Время явного ожидания. По умолчанию - CONFIG.WAIT_TIMEOUT

Если в аргументе path передан относительный путь, то поиск файла будет производится относительно каталога тестового набора т.е. CONFIG.TEST_CASE_PATH.

Пример:

TEST["Закачка"](
    URL("https://demoqa.com/upload-download")
    
    # Абсолютный путь к файлу теста файлу теста
    , UPLOAD("#uploadFile", __file__)
    , ONE("#uploadedFilePath") == "C:\\fakepath\\"+os.path.basename(__file__)
    
    # Файл kote.jpg в подкаталоге data текущего набора тестов
    , UPLOAD("#uploadFile", "data/kote.jpg")
    , ONE("#uploadedFilePath") == "C:\\fakepath\\kote.jpg"
)

Управляющие команды

IF(выражение, act1 [, act2])

Тернарный условный оператор.

Аргументы:

  • выражение - Если выражение истинно, то выполняется действие act1, а если ложно то действие act2.
  • act1 - Команда или кортеж команд
  • act2 - Команда или кортеж команд

Пример:

# Напечатать URL страницы если он не соответствует регулярному выражению
...
, IF(~(PAGE_URL @ r"^.*news$"), PRINT(PAGE_URL))
...

LOOP(count, act)

Выполнение действия заданное число раз

Аргументы:

  • count - Натуральное число указывающие количество повторений действия
  • act - Команда или кортеж команд

Пример:

# 10 раз печатает URL текущей страницы
...
, LOOP(10, PRINT(PAGE_URL))
...

WHILE(выражение, act [, iteration])

Выполнение действия пока выражение истинно.

Аргументы:

  • выражение - предикат, если значение истинно, то действие выполняется
  • act - Команда или кортеж команд
  • iteration - Максимальное число итераций. Если число итераций будет превышено, то тест завершится с ошибкой.

Пример:

# удаление данных из списка форм
...
, WHILE(COUNT("css::div.form_list") > 0, (
    CLICK("id::del_icon_1")
    , CLICK("id::del_modal_button")
))
...

STOP_TEST([выражение] [, “message”])

Остановка теста. Статус теста устанавливается в STOPPED.

Аргументы:

  • выражение - предикат, если значение истинно, то тест будет пропущен
  • message - Сообщение для отчётов

Пример:

# Остановить тест если URL не соответствует регулярному выражению
...
, STOP_TEST(~(PAGE_URL @ r"^.*news$"), "Не тот сайт "+PAGE_URL)
...

SKIP_TEST([выражение] [, “message”])

Пропуск теста. Статус теста устанавливается в SKIPPED, если текущий статус выше чем SKIPPED, то он не меняется.

Аргументы:

  • выражение - предикат, если значение истинно, то тест будет пропущен
  • message - Сообщение для отчётов

Пример:

# Пропустить тест если URL не соответствует регулярному выражению
...
, SKIP_TEST(~(PAGE_URL @ r"^.*news$"), "Не тот сайт "+PAGE_URL)
...

SKIP_STEP([выражение] [, “message”])

Пропуск текущего шага. Статус теста не меняется.

Аргументы:

  • выражение - предикат, если значение истинно, то шаг будет пропущен
  • message - Сообщение для отчётов

Управление браузером

REFRESH | REFRESH(timeout)

Перезагружает текущую страницу.

Аргументы:

  • timeout - тайм-аут загрузки страницы. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

...
, REFRESH
...

BACK_PAGE | BACK_PAGE(timeout)

Перемещаемся на один шаг назад по истории браузера

Аргументы:

  • timeout - тайм-аут загрузки страницы. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

...
, BACK_PAGE
...

FORWARD_PAGE | FORWARD_PAGE(timeout)

Перемещаемся на один шаг вперёд по истории браузера

Аргументы:

  • timeout - тайм-аут загрузки страницы. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

...
, FORWARD_PAGE
...

MAXIMIZE

Развернуть окно браузера

Пример:

...
, MAXIMIZE
...

MINIMIZE

Свернуть окно браузера

Пример:

...
, MINIMIZE
...

WIDTH | WIDTH(“селектор” [, timeout])

Возвращает ширину окна браузера или элемента

Аргументы:

  • селектор - селектор элемента
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

HEIGHT | HEIGHT(“селектор” [, timeout])

Возвращает высоту окна браузера или элемента

Аргументы:

  • селектор - селектор элемента
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

POS_X | POS_X(“селектор” [, timeout])

Возвращает X координату правого верхнего угла текущего окна браузера (относительно правого левого угла экрана) или элемента (относительно правого левого угла браузера).

Аргументы:

  • селектор - селектор элемента
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

POS_Y | POS_Y(“селектор” [, timeout])

Возвращает Y координату правого верхнего угла текущего окна браузера (относительно правого левого угла экрана) или элемента (относительно правого левого угла браузера).

Аргументы:

  • селектор - селектор элемента
  • timeout - Время явного ожидания элемента. По умолчанию - CONFIG.WAIT_TIMEOUT

Пример:

...
# Печатаем геометрию окна браузера
, PRINT(POS_X, POS_Y, WIDTH, HEIGHT)

# Печатаем геометрию элемента c id - search
, PRINT(POS_X("#search"), POS_Y("#search"), WIDTH("#search"), HEIGHT("#search"))
...

GEOMETRY([x [, y [, width [,height]]]])

Изменяет геометрию окна браузера

Аргументы:

  • x - X-координата верхнего левого угла браузера. По умолчанию - POS_X
  • y - Y-координата верхнего левого угла браузера. По умолчанию - POS_Y
  • width - ширина окна браузера (не может быть меньше 516). По умолчанию - WIDTH
  • height - высота окна браузера (не может быть меньше 134). По умолчанию - HEIGHT

Пример:

...
# Перемещение окна браузера в верхний левый угол
, GEOMETRY(0, 0)
# Изменяем размер окна
, GEOMETRY(width=1024, height=768)
...

NEW_WINDOW([“url”] [, timeout])

Открывает новое окно браузера, после чего переходит на указанный адрес или на CONFIG.BASE_URL. Возвращает время загрузки страницы.

Аргументы:

  • url - Адрес страницы. Если не указан, то используется CONFIG.BASE_URL
  • timeout - Время явного ожидания открытия окна. По умолчанию - CONFIG.WAIT_TIMEOUT

NEW_TAB([“url”] [, timeout])

Открывает новую вкладку браузера, после чего переходит на указанный адрес или на CONFIG.BASE_URL. Возвращает время загрузки страницы.

Аргументы:

  • url - Адрес страницы. Если не указан, то используется CONFIG.BASE_URL
  • timeout - Время явного ожидания открытия вкладки. По умолчанию - CONFIG.WAIT_TIMEOUT

WINDOW | WINDOW(index)

Переключится на предыдущее окно/вкладку или на окно/вкладку с указанным индексом. Индексы присваиваются в порядке открытия окон или вкладок. Для обращения активным окнам с конца можно использовать отрицательные индексы. После переключения на окно оно изменяет свой индекс на последний.

Аргументы:

  • index - порядковый номер окна/вкладки. По умолчанию: -2

CLOSE | CLOSE(index)

Закрывает текущие окно/вкладку или на окно/вкладку с указанным индексом. Индексы присваиваются в порядке открытия окон или вкладок. Для обращения активным окнам с конца можно использовать отрицательные индексы.

Единственное окно невозможно закрыть этой командой.

Аргументы:

  • index - порядковый номер окна/вкладки. По умолчанию: -1

Пример:

TEST["browser-windows"](
    # После открытия индекс основного окна - 0
    URL("https://demoqa.com/browser-windows")
    
    , "New Tab"
    , CLICK("#tabButton")
    # Открывается окно Tab
    # Индекс основного окна - 0, окна Tab - 1
    , ONE("h1") == "This is a sample page"
    , WINDOW
    # Переключаемся на основное окно.
    # Индекс окна "Tab"- 0, основного окна - 1
    
    , "New Window"
    , CLICK("#windowButton")
    # Открывается окно Window
    # Индекс окна Tab- 0, основного окна - 1, окно Window - 2
    , ONE("#sampleHeading") == "This is a sample page"
    , WINDOW
    # Переключаемся на основное окно.
    # Индекс окна Tab- 0, окно Window - 1, основного окна - 2
    
    , "New Window Message"
    , CLICK("#messageWindowButton")
    # Открывается окно Message
    # Индекс окна Tab- 0, окно Window - 1, основного окна - 2, Message -3
    , ONE("body") == "Knowledge increases by sharing but not by saving. Please share this website with your friends and in your organization."
    
    , "Закрываем"
    , CLOSE
    # Закрываем окно Message
    # Индекс окна Tab - 0, окно Window - 1, основного окна - 2
    , WINDOW
    # Переключаемся на окно Window
    # Индекс окна Tab - 0, основного окна - 1, окно Window - 2
    , CLOSE
    # Закрываем окно Window
    # Индекс окна Tab - 0, основного окна - 1
    , WINDOW
    # Переключаемся на окно Tab
    # Индекс основного окна - 0, окна Tab - 1
    , CLOSE
    # Закрываем окно Tab
    # Индекс основного окна - 0
    
    , browser = "firefox"
    , tags = "window"
)

Cookies, Local Storage

SET_COOKIE(“name”, value[, property_dict])

Добавляет cookies.

Аргументы:

  • name - Имя cookie
  • value - Значение cookie
  • property_dict - Словарь свойств cookie:
Свойство По умолчанию Описание
expires "" Максимальное время жизни cookie (в HTTP формате)
max_age -1 Количество секунд до истечения срока действия cookie
path “/” cookie видны только по пути path и ниже
domain "" если указан domain, то cookie видны и на его поддоменах
secure False cookie доступным только при использовании HTTPS
httpOnly False запретить доступ к cookie из JavaScript
sameSite “None” запретить отправлять куки с внешними запросами

Пример:

# устанавливаем auth
, SET_COOKIE("auth", "1232132121", {"httpOnly": True})

COOKIES

Константа предоставляющая доступ ко всем cookie на текущей странице.

Пример:

# вывести все Cookies
, PRINT(COOKIES)

# сookie "auth" установлена
, "auth" > COOKIES

# Проверка значения у сookie "auth"
, COOKIES["auth"] == "1232132121"

# Проверка свойства "httpOnly" у сookie "auth"
, COOKIES["auth"]["httpOnly"] == True

DEL_COOKIES | DEL_COOKIES(“name 1” [,… “name n”])

Удаляет cookies с идентификатором name, если он не указан, то удаляет все cookies.

Аргументы:

  • name - Имя cookie

Пример:

# удаляем все cookies
, DEL_COOKIES

# удаляем csrftoken
, DEL_COOKIES("csrftoken")

# удаляем csrftoken и auth
, DEL_COOKIES("csrftoken", "auth")

SET_STORAGE(“key”, value)

Устанавливает значение в localStorage

Аргументы:

  • key - Идентификатор данных
  • value - Данные

Пример:

# Записываем имя пользователя в localStorage
, SET_STORAGE("name", "Василий Пупкин")

GET_STORAGE(“key”)

Возвращает значение из localStorage

Аргументы:

  • key - Идентификатор данных

Пример:

# Проверяем имя пользователя
, GET_STORAGE("name") == "Василий Пупкин"

DEL_STORAGE | DEL_STORAGE(“key 1”[, …“key n”])

Удаляет данные из localStorage. Если ключ не указан, то всё хранилище очищается.

Аргументы:

  • key - Идентификатор данных

Пример:

# Удаляем имя пользователя из localStorage
, DEL_STORAGE("name")

STORAGE_KEYS

Список ключей localStorage

Пример:

# Проверяем наличие ключа "name" в localStorage
, "name" > STORAGE_KEYS