Оглавление:
Expand | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|
Описание
Окно переменных служит для создания, удаления, переименования переменных проекта и редактирования их значений. По сути это окно представляет собой таблицу с возможностью редактирования и сортировки переменных.
Данное окно удобно использовать при отладке.
Во время выполнения проекта изменять значения переменных можно с помощью экшена Обработка переменных
Для чего это используется?
Различные манипуляции с переменными.
Отслеживание изменений происходящих с переменными в процессе отладки проекта.
Как открыть окно?
Один из способов открыть “Окно переменных” - это нажать на соответствующую кнопку в панели статических блоков.
Note |
---|
Если вы не видите панель статических блоков, то кликните правой клавишей мыши на пустом пространстве рабочего окна и установите чекбокс “Показать статические блоки” в контекстном меню. |
Второй способ - через меню Окно => Переменные.
Элементы управления
Рассмотрим каждый элемент окна переменных:
Типы переменных
По сути это таб переключающий отображение выбранного типа переменных. Имеет шесть вариантов:
Свои
Это переменные, которые пользователь сам создаёт в процессе написания шаблона. Переменные должны быть обязательно на английском языке. Не допускается использование пробелов и других символов, кроме символа нижнего подчеркивания _
. В названии переменной разрешается использование цифр, но не в начале слова.
Авто
Авто-переменные генерируются автоматически в режиме записи проекта, а также при добавлении некоторых кубиков, например при автоматическом добавлении кубика Взятие значения . Автосгенерированные переменные имеют примерно такие названия - Variable1, RecognitionResult0,
однако вы всегда можете переместить авто-переменные в Свои и там задать им любое желаемое имя.
Как переместить автоматически созданную переменную в Свои?
Для этого надо перейти во вкладку Авто, выделить переменную и нажать кнопку “Переместить в Свои“:
После перемещения переменной в Свои её можно переименовать, дав более понятное имя.
Окружение
В этом табе отображаются переменные окружения проекта: различные параметры страницы инстанса (URL, DOM, текст, домен, текст нотификаций и алертов и т. д.), переменные времени и даты, переменные проекта (имя, папка, правила прокси, id последней ошибки и т. д.) , многочисленные переменные профиля (почта, пол, имя, юзерагент и т. д.)
В таблицах ниже описаны не только переменные из вкладки Окружение но и другие доступные системные переменные.
Переменные текущей активной вкладки
title | Нажмите здесь, чтобы развернуть |
---|
Имя
Описание
{-Page.Url-}
Текущий URL страницы
{-Page.Source-}
Исходный код текущей веб-страницы
{-Page.Dom-}
DOM-модель текущей веб-страницы
{-Page.Text-}
Текст текущей веб-страницы без HTML тегов
{-Page.FullDomain-}
Полный домен текущей веб-страницы.
С учётом поддоменов.
{-Page.Domain-}
Основной домен текущей веб-страницы.
Без учёта поддоменов.
{-Page.LastAlertTitle-}
Заголовок алерта, выводимого на сайтах с помощью JS функции alert()
{-Page.LastAlertText-}
Текст алерта, выводимого на сайтах с помощью JS функции alert()
{-Page.LastNotificationTitle-}
Заголовок последнего уведомления от сайта
Речь о сообщениях, которые приходят после того, как Вы разрешаете сайту присылать Вам уведомления.
{-Page.LastNotificationText-}
Текст последнего уведомления от сайта
Речь о сообщениях, которые приходят после того, как Вы разрешаете сайту присылать Вам уведомления.
{-Page.LastDownloadedFile-}
Полный путь последнего скачанного файла
Время и дата
title | Нажмите здесь, чтобы развернуть |
---|
Имя
Описание
{-TimeNow.Date-}
Текущие дата и время в формате ММ/ДД/ГГГГ чч:мм:сс
(пример - 01/25/2020 14:41:18
).
{-TimeNow.Day-}
День месяца
{-TimeNow.Month-}
Текущий месяц (числом)
{-TimeNow.Year-}
Текущий год
{-TimeNow.DayOfWeek-}
День недели, на английском.
{-TimeNow.Hour-}
Текущий час (в 24 часовом формате)
{-TimeNow.Minute-}
Текущая минута
{-TimeNow.Second-}
Текущая секунда
{-TimeNow.Millisecond-}
Текущая миллисекунда
{-TimeNow.TimeNow-}
Текущие дата и время в формате ГГГГ-ММ-ДД чч-мм-сс--миллисекунды
(2020-01-25 14-41-59--834
)
Note |
---|
Не поддерживает форматирование! |
{-TimeNow.UnixTime-}
Переменные проекта
title | Нажмите здесь, чтобы развернуть |
---|
Имя
Описание
{-Project.BrowserProfileFolder-}
Полный путь к профиль-папке (или пустая строка, если профиль-папка не используется).
{-Project.Directory-}
Директория шаблона
{-Project.PluginDirectory-}
Директория плагина (если выполняемый шаблон - плагин)
{-Project.Name-}
Название шаблона
{-Project.Proxy-}
Текущий прокси проекта.
{-Project.ProxyRules-}
Используемое правило из ProxyChecker’a
{-Project.LastExecutedActionElapsedTime-}
Время затраченное на работу последнего выполненного экшена
{-Project.LastExecutedActionId-}
ID последнего выполненного действия
{-Project.LastErrorComment-}
Текст последнего экшена завершившегося с ошибкой
Note |
---|
Если у экшена не был задан пользовательский комментарий (ПКМ по экшену => Комментарий), то вернётся пустая строка. |
Профиль
title | Нажмите здесь, чтобы развернуть |
---|
Имя
Описание
{-Profile.Age-}
Возраст
{-Profile.BornDay-}
День рождения
{-Profile.BornYear-}
Год рождения
{-Profile.BornMonth-}
Месяц рождения
{-Profile.Name-}
Имя
{-Profile.Surname-}
Фамилия
{-Profile.NickName-}
Никнейм
{-Profile.Email-}
E-mail адрес
{-Profile.EmailPassword-}
Пароль от почтового ящика
{-Profile.Login-}
Логин
{-Profile.Password-}
Пароль
{-Profile.Sex-}
Пол
{-Profile.Language-}
Язык
{-Profile.Country-}
Страна
{-Profile.Town-}
Город
{-Profile.Region-}
Регион
{-Profile.ZipCode-}
Индекс
{-Profile.SecretQuestionAnswer1-}
Ответ на секретный вопрос #1
{-Profile.SecretQuestionAnswer2-}
Ответ на секретный вопрос #2
{-Profile.AvailScreenHeight-}
Высота сгенерированного экрана (за исключением панели задач)
Note |
---|
Если не включена эмуляция Screen и параметр не изменён через C# код или через экшен Операции над профилем , то будет возвращено значение 50505 |
{-Profile.AvailScreenWidth-}
Ширина сгенерированного экрана (за исключением панели задач)
Note |
---|
Если не включена эмуляция Screen и параметр не изменён через C# код или через экшен Операции над профилем , то будет возвращено значение 50505 |
{-Profile.ScreenSizeHeight-}
Высота сгенерированного экрана
Note |
---|
Если не включена эмуляция Screen и параметр не изменён через C# код или через экшен Операции над профилем , то будет возвращено значение 50505 |
{-Profile.ScreenSizeWidth-}
Ширина сгенерированного экрана
Note |
---|
Если не включена эмуляция Screen и параметр не изменён через C# код или через экшен Операции над профилем , то будет возвращено значение 50505 |
{-Profile.ScreenLeft-}
Расстояние в пикселях от левого края экрана до окна браузера.
Можно изменить с помощью экшена Операции над профилем
{-Profile.ScreenTop-}
Расстояние в пикселях от верхнего края экрана до окна браузера.
Можно изменить с помощью экшена Операции над профилем
{-Profile.OuterHeight-}
Устаревшие переменные.
{-Profile.OuterWidth-}
{-Profile.OuterHeightShift-}
{-Profile.OuterWidthShift-}
{-Profile.HTTPAccept-}
HTTP заголовок Accept
Указывает, какие типы контента, выраженные как MIME типы, клиент (браузер) может понять.
{-Profile.AcceptCharset-}
HTTP заголовок Accept-Charset
Сообщает кодировку символов, которую готов принять браузер.
{-Profile.AcceptLanguage-}
HTTP заголовок Accept-Language
Сообщает серверу обо всех языках, которые нам предпочтительны при чтении веб-страницы.
{-Profile.AcceptEncoding-}
HTTP заголовок Accept-Encoding
Перечень поддерживаемых способов кодирования содержимого сущности при передаче.
{-Profile.UserAgent-}
Строка User-Agent сгенерированного браузера
{-Profile.UserAgentAppCodeName-}
Отдельные элементы сгенерированной строки User-Agent
{-Profile.UserAgentAppName-}
{-Profile.UserAgentAppVersion-}
{-Profile.UserAgentBrowserLanguage-}
{-Profile.UserAgentCpuClass-}
{-Profile.UserAgentLanguage-}
{-Profile.UserAgentOsCpu-}
{-Profile.UserAgentPlatform-}
{-Profile.UserAgentProduct-}
{-Profile.UserAgentProductSub-}
{-Profile.None-}
Устаревшая переменная
Системные переменные (Environment)
title | Нажмите здесь, чтобы развернуть |
---|
Имя
Описание
{-Environment.CurrentUser-}
ID пользователя из личного кабинета, работающего с шаблоном.
{-Environment.TickCount-}
Количество миллисекунд прошедших с момента включения компьютера.
Note |
---|
Эта переменная основана на Environment.TickCount из C#, поэтому ей присуща одна особенность: если компьютер будет долго и беспрерывно работать, то через ~24,9 дней эта переменная достигнет максимального положительного значения - |
Строковые символы (String)
title | Нажмите здесь, чтобы развернуть |
---|
Имя
Описание
{-String.Enter-}
Переход на новую строку
{-String.Space-}
Пробел
{-String.Tab-}
С полным списком доступных переменных окружения можно ознакомиться в статье Переменные окружения ZennoPoster
Глобальные
Обычные переменные видны только в пределах одного потока проекта (если проект работает в многопоточном режиме, то каждый поток будет иметь свою локальную, независимую переменную)
Глобальные же переменные доступны для всех проектов и их потоков в ZennoPoster.
Для того, чтобы избежать путаницы у глобальных переменных есть дополнительное свойство - Пространство имён.
Note |
---|
У ProjectMaker и ZennoPoster раздельные глобальные переменные. Иными словами изменения внесённые в глобальную переменную в PM не будут видны в ZP, и наоборот. |
Json
Эти переменные также генерируются автоматически, но в процессе парсинга JSON. В режиме “Парсинг” у экшена “Обработка JSON/XML“ можно из JSON текста сразу разложить значения по автоматически созданным переменным с соответствующими узлами.
Далее в проекте можно использовать эти переменные через префикс {-Json….-}
, либо в C# посредством объекта project.Json;
Подробнее: Обработка JSON и XML
Xml
Переменные XML автоматически создаются в соответствующем табе после парсинга XML документа. В режиме “Парсинг” у экшена “Обработка JSON/XML“ разбираем XML, который, в свою очередь, тоже может находиться в переменной.
Также как и JSON переменные XML переменные можно использовать через префикс {-XML….-}
, либо в C# через свойства объекта project.XML;
Подробнее: Обработка JSON и XML
Фильтр
Открывает и закрывает поле фильтрации
Поле фильтрации
Если проект имеет большое количество переменных, то поиск нужной переменной может занимать много времени. Поэтому в окне переменных предусмотрена многофункциональная фильтрация. Каждый столбец можно отфильтровать по разному одним из 12-ти способов.
Подробнее о фильтрах можно почитать в статье описывающей Окно лога.
Очистка сортировки
Сбрасывает отсортированные переменные.
Кнопка отображается только в том случае, если переменные отсортированы по одной из колонок. Чуть подробнее о сортировке написано в абзаце про Заголовки.
Добавить
Открывает диалоговое окно в которое можно ввести имя создаваемой переменной.
Имя переменной может состоять из букв латинского алфавита, цифр и символа нижнего подчёркивания. Но обязательно должно начинаться с буквы.
Удалить
Удаляет выделенную переменную, предварительно выведя подтверждающее окно. Чтобы выделить переменную достаточно кликнуть по любому месту в строке этой переменной.
Переименовать
Выводит диалоговое окно с возможностью отредактировать имя переменной.
Быстрый доступ к переименованию - двойной клик по строке переменной в области столбца “Имя”.
Переименование доступно только для типов Свои и Глобальные.
Note |
---|
Имя переменной изменится так же во всех экшенах, где она используется! |
Очистка неиспользуемых переменных
Часто в больших проектах создаются переменные, которые позднее никак не участвуют в работе шаблона. Чтобы не занимать место в памяти и визуально не занимать ценное рабочее пространство, можно периодически удалять такие переменные. ZennoPoster найдёт все неиспользуемые переменные и выведет их список с предложением удалить их. Каждую очистку необходимо делать для каждого типа переменных.
Ручная сортировка переменных (Drag & Drop)
Info |
---|
Добавлено в ZennoPoster 7.2.1.0 |
Вы можете расположить переменные так как Вам удобно с помощью кнопок “Вверх” и “Вниз”, либо с помощью мыши (Drag & Drop). Свой порядок работает тогда, когда выключена сортировка по столбцам (для этого нажмите на кнопку "Очистка сортировки").
Expand | ||
---|---|---|
| ||
Чтобы сбросить ручную расстановку можно отсортировать переменные по одному из столбцов.
Заголовки столбцов
Одновременно служат как для фильтрации переменных, так и для сортировки. Достаточно кликнуть по заголовку столбца и произойдёт сортировка как по возрастанию имени переменной, так и по убыванию, как по возрастанию значения переменной, так и по убыванию. Повторный клик меняет направление сортировки.
Кликнув ПКМ по заголовку любого столбца появится меню в котором можно выбрать отображаемые колонки.
Колонка “Имя”
Здесь отображаются имена переменных используемых в проекте
Если дважды кликнуть по имени переменной, то появится диалоговое окно для переименования.
Note |
---|
Имена переменных регистрозависимы: Name, NAME, name - три разных переменных! |
Колонка “Значение”
Выводит текущие значения переменных. Кликнув по значению выбранной переменной можно прямо в поле ввода отредактировать данные.
Колонка “Значение по-умолчанию”
Если требуется чтобы при запуске проекта переменная уже имела какое-то значение (при старте проекта все переменные пустые), то необходимо ввести в это поле нужное значение.
Переменные окружения, Json и Xml не имеют значений по умолчанию и поэтому в их представлении этот столбец отсутствует.
Колонка “Примечание”
По умолчанию данная колонка скрыта.
Можно использовать для пометок к переменным (тут можно указать для какой цели используется эта переменная)
У глобальных переменных есть дополнительный столбец с пространством имён.
Скопировать макрос переменной в буфер обмена
Быстрый способ скопировать макрос типа {-Variable.value-}
кликнуть по такой иконке в строке переменной.
Контекстное меню
Кликнув ПКМ напротив переменной появится контекстное меню.
Доступно для вкладок Свои, Авто и Глобальные.
Вкладки Свои, Глобальные
Вкладка Авто
Копирование переменных из проекта в проект
Нередко требуется создать новый проект используя переменные из старого шаблона. Копировать переменные по одной крайне неэффективное занятие. поэтому можно скопировать сразу все переменные одного проекта и вставить их в другом.
Откройте старый проект.
Кликните правой клавишей мыши на кнопке “Переменные проекта” в “Панели Статических блоков” и нажмите “Скопировать переменные”.
Затем откройте новый проект и опять кликните правой клавишей мыши на кнопке “Переменные проекта” в “Панели Статических блоков” и нажмите “Вставить переменные”.
В появившемся окне выберите чекбоксами переменные какого типа нужно вставить в проект и подтвердите вставку переменных. Переменные копируются вместе с их значениями по умолчанию.
Работа с переменными
Макросы переменных
В ProjectMaker использовать переменные можно посредством макросов, которые имеют вид {-Variable.myVariable-}
- этот макрос при исполнении проекта передаст значение переменной myVariable
. Достаточно вставить макрос переменной в любое поле свойств экшена (там где это возможно) и при исполнении экшена в поле подставится значение соответствующей переменной.
У глобальных переменных нужно указать в макросе область видимости - {-GlobalVariable.someNamespace.text-}
Expand | ||
---|---|---|
| ||
В основном переменные в ZennoPoster бывают трёх типов:
Производить различные операции с переменными можно как в кубике C#, так и в кубике JavaScript, но нужно иметь в виду, что в C# все переменные попадают в текстовом виде и, чтобы их конвертировать в числа или в логические переменные, потребуется конвертация или приведение в нужный тип. Например, вот так выглядит приведение строковых переменных в C# к целочисленному (int) типу двумя разными способами, сложение их и возврат в строковую переменную для дальнейшего использования в проекте: Для операций со строками в кубике JavaScript необходимо текстовые переменные обернуть в кавычки - |
Рекомендации по именованию переменных
Старайтесь давать переменным названия по которым сразу становится понятна задача и область применения переменной. Не нужно называть переменные короткими и бессмысленными именами - f1
, qwerty
- этим вы значительно усложните исправление и поддержку проекта как для себя, так и для других разработчиков, которые будут иметь доступ к шаблону.
Если переменная часто используется в проекте, то желательно назвать её коротко, но понятно - counter
, username
, proxy
.
Для названий имеющих в основе два и более слова старайтесь разделять их либо заглавной буквой (secondPassword
), либо символом нижнего подчеркивания (page_html
).
Это общепринятые практики, которые значительно улучшат читабельность и эффективность работы с вашим проектом.
Присвоение значения
Простейший пример использования переменных заключается в комбинации статического текста, своих переменных и переменных окружения с помощью экшена Обработка переменных.
В данном примере имя берется из переменной окружения {-Profile.Name-}
, день недели из {-TimeNow.DayOfWeek-}
, а возраст из своей переменной count
. После запуска кубика результат сохраняется в переменной result
.
Арифметические операции над числами
Используя синтаксис языка JavaScript и соответствующий кубик можно производить различные математические операции над числами.
В данном случае в переменных value1
и value2
находятся целые числа, которые нужно сложить и потом умножить на 10. Результат вычислений попадает в переменную result
.
Использование переменных
Старайтесь использовать переменные вместо жёстко прописанного текста в тех местах, где значение может когда-то измениться.
В качестве примера можно привести пути файлов - на Вашем компьютере путь один, а у клиента он другой. Если необходимый файл находится в одной директории с проектом (или в одной из его поддиректорий) то хорошим решением будет использовать макрос {-Project.Directory-}
- путь к директории где сохранён шаблон. Вот как может выглядеть путь - {-Project.Directory-}file.txt