Синхронизатор
Синхронизатор окон
- 1
- Ведущих окон
- 40 мс
- Действия ведущего забираются раз в
- 100-600 мс
- Пауза целевого окна перед действием
- однозначный
- Путь к нажатому элементу
Одно окно ведёт
Синхронизатор живёт в программе, в разделе автоматизации. Вы выбираете один открытый профиль в «Ведущий профиль» и один или несколько открытых в «Целевые профили».
Работу вы по-прежнему делаете своими руками, а программа только переносит её в другие окна. Заранее вы ничего не пишете, и без вас ничего не происходит.
Нажатия
Тот элемент, на который вы нажали левой кнопкой, место курсора в поле и точка внутри окна.
Набор текста
Каждая буква, которую вы напечатали, в поле формы и в поле для текста поста или сообщения.
Вставка
Текст, который вы вставили.
Прокрутка
Насколько вы прокрутили колесом или пальцем.
Клавиши
Ввод, Tab, Backspace, Delete, Esc, стрелки, Home, End, PageUp, PageDown, клавиши вне поля и сочетания Cmd или Ctrl с A и Z.
Смена адреса
Адрес, который вы набрали, и шаг «назад» или «вперёд». За ссылкой целевое окно идёт своим нажатием.

Остальные ваши окна не тронуты
Ваши действия программа берёт внутри самой ведущей страницы, а не слежкой за мышью на уровне системы. Записывает их помощник в своём отдельном мире страницы: у него свои имена и свои слушатели, и код самой страницы их не видит.
Слушает он только ведущее окно, поэтому обычное окно остаётся нетронутым. Накопленное программа забирает раз в 40 мс на обоих движках, а при остановке помощник снимает свои слушатели сразу.
Едет только ваш ввод
Что везёт одно действие
Ваше нажатие едет не точкой на экране. С ним едет тот элемент, в который вы попали, и само место нажатия внутри окна, записанное двумя долями.
Из поля уезжают буквы, а не готовое значение: целевой профиль печатает их сам, клавишами, в своём темпе. Прокрутка уезжает расстоянием, а клавиша своим именем.
| Что | Что уезжает | Что делает целевой профиль |
|---|---|---|
| Нажатие | Элемент, в который вы попали, точка долями ведущего окна и место курсора в поле | Ведёт мышь к случайной точке того же элемента и нажимает с удержанием, курсор в поле ставит туда же; элемента нет, нажимает в тех же долях своего окна |
| Набор текста | Буквы, напечатанные в поле формы или в поле поста | Печатает те же буквы клавишами своей раскладки и в своём темпе |
| Вставка | Вставленный текст | Вставляет тем же сочетанием клавиш; в поле пароля печатает по буквам |
| Прокрутка | Расстояние, на которое вы прокрутили колесом или пальцем | Крутит колесо так, как крутит мышь системы своего профиля, на то же расстояние |
| Клавиша | Имя клавиши и сочетание | Нажимает и отпускает ту же клавишу, Cmd или Ctrl по системе своего профиля |
| Переход | Набранный адрес или шаг «назад» и «вперёд» | Открывает тот же адрес или делает тот же шаг по истории; за ссылкой идёт своим нажатием |
Повтор целится в элемент
Окно каждого целевого профиля сначала ищет тот же элемент, докручивает до него колесом и ведёт к нему мышь, а уже потом нажимает. Именно эта дорога выдерживает окно другого размера и вёрстку, съехавшую под объявлением.
Если элемент не нашёлся, в дело идут доли, развёрнутые по ширине и высоте окна самого целевого профиля. У профиля, одетого телефоном, нажатие уходит касанием, а прокрутка смахиванием: настоящий телефон событий мыши не шлёт вовсе.
Перед каждым действием целевой профиль выжидает свою паузу, от 100 до 600 мс, у каждого окна свою. Несколько окон, которые делают одно и то же в одну и ту же миллисекунду, сами по себе связывают профили.
На ARMANOS Browser ведёт видимая вкладка
У профиля часто несколько вкладок: стартовая страница ARMANOS, заданный вами адрес и вкладки, оставленные в прошлый раз. ARMANOS Browser открывает их снова, когда в его настройках выбрано «Ранее открытые вкладки», как у нового профиля. На ARMANOS Browser ведёт та вкладка, на которую смотрите вы, и узнаёт это программа у самих страниц.
- 1
Ведущей становится та, что на виду
Когда у ведущего несколько вкладок, программа спрашивает у них, какая сейчас на виду, и ведёт первая ответившая. Иначе ведёт одна из вкладок профиля, но не стартовая страница.
- 2
У каждого целевого свой ответ
Целевой профиль, которому нечем ответить, выбывает до начала сеанса, а если не осталось ни одного, запуск откажет и скажет об этом.
- 3
Ведущее окно готово
Если приготовить ведущее окно не удалось, сеанс не начнётся: наполовину начатый сеанс выглядел бы работающим и не повторял бы ничего.
- 4
Вы видите счёт
Полоса состояния показывает, сколько окон идёт следом, и убавляет счёт по мере закрытия окон целевых профилей.
Что едет после запуска
Вкладки программа выбирает один раз, при запуске, и держит этот выбор для ведущего и для каждого целевого. Иначе половина вашей работы уехала бы в другую вкладку.
Набранный адрес и шаги «назад» и «вперёд» едут той же очередью, что и действия, после них. Переход по ссылке или отправку формы целевое окно повторяет своим нажатием и второй раз ту же страницу не грузит. Пустые страницы, страницы ошибок и адреса отладчика к целевым не уезжают никогда.
Все окна ложатся одной сеткой
Повтор полезен, только если вы видите итог, поэтому программа умеет разложить все открытые окна сеткой. Сетку она строит на том экране, где стоит указатель, внутри его рабочей области.
Клетка не меньше 420 на 320
Столбцов программа берёт квадратный корень из числа окон с округлением вверх и оставляет между клетками зазор в шесть точек. Если клетка вышла бы меньше 420 на 320, она откажет и объяснит причину вместо раскладки, в которой ничего не разобрать.
Окна обоих движков делят одну сетку и потому не ложатся друг на друга. Профиль, запущенный без окна, программа пропустит, а новое место запомнит за профилем, и оно переживёт следующий запуск.
- Открыто окон
- 6
- Столбцов и строк
- 3 на 2
- Рабочая область экрана
- 2560 на 1440
- Зазор между клетками
- 6
- Итоговая клетка
- 845 на 711
Посчитано по той же формуле, что работает у вас в программе. Ниже 420 на 320 на клетку ответом будет отказ, а не сетка.
Руками или сценарием
Синхронизатор нужен там, где вы и так работаете, один раз и глядя на экран: одно и то же уведомление о куки в восьми учётных записях, одна и та же анкета, один и тот же заказ до одного и того же шага.
Сценарий нужен там, где работу повторят снова. Написать его дороже, повторить намного дешевле.
Простое правило: больше двух раз пишите сценарий, один раз на пять учётных записей ведите окно.
Тот же проход, несколько записей, сейчас
Синхронизатор. Ничего не надо писать заранее и ничего не остаётся после.
Тот же проход, много записей, и снова
Сценарий с переменными и расписанием.
В каждой записи своя работа
Ни то, ни другое. Откройте профили и работайте в них по отдельности.

Из ведущего окна уезжает всё
Чего это не делает
- Едут нажатия левой кнопкой, набор текста, вставка текста, прокрутка колесом и пальцем, клавиши и переходы в главном кадре. Перетаскивание, наведение, правая кнопка, выбор файла и действия внутри встроенного кадра не едут.
- Повтор нацелен, но не проверен. Если у целевого профиля другая вёрстка, другой язык или страница без входа, нажатие уйдёт мимо или в пустоту, и вам об этом никто не скажет.
- Целевой профиль печатает в своём темпе и отстаёт от вас: длинный текст он допечатывает уже после вас. Выбор в выпадающем списке клавишами повторяется всегда, а мышью только тогда, когда этот список у целевого окна уже в фокусе. ARMANOS Browser, открытый без окна, держит свой буфер обмена, и вставку он печатает по буквам.
- Окно целевого профиля, целиком закрытое другими окнами, система считает скрытым: оно ждёт и ничего не повторяет, пока его снова видно. Перед сеансом разложите окна кнопкой «Разложить окна».
- Один сеанс за раз и одно ведущее окно. Запуск другого сеанса останавливает идущий.
- Ничего не остаётся на диске. Сеанс нельзя выгрузить, проиграть позже или превратить в сценарий.
Как проверить
Утверждения ниже указывают на файл, который их исполняет, и на файл, который их проверяет.
- Действия ведущего действительно доезжают до окна целевого профиля и не доезжают до запуска, а после остановки слушателей записи на странице нет
- apps/desktop/src/main/main.js · apps/desktop/test/синхронизатор-живьём.js
- Целевые окна получают настоящие нажатия, буквы, колесо и вставку, печатают в своём темпе, ждут свою паузу и идут за ссылкой своим нажатием, а буфер обмена возвращается таким, каким был
- apps/desktop/src/lib/синхронизатор-повтор.js · apps/desktop/test/синхронизатор-ведомые-настоящими-живьём.js
- Страница-ловушка у ведущего и у целевого окна не находит от синхронизатора ни событий от скрипта, ни новых имён, ни вызовов своих функций сверх себя до запуска
- apps/desktop/src/injected/агент-записи.js · apps/desktop/test/страница-ловушка-живьём.js
- На ARMANOS Browser ведёт видимая вкладка, и выбранные при запуске вкладки служат весь сеанс
- apps/desktop/src/main/main.js · apps/desktop/test/синхронизатор-берёт-видимую-вкладку.js
- Синхронизатор на обоих движках переносит только события, сделанные человеком, а поддельные нажатие, ввод, клавишу и прокрутку не записывает
- apps/desktop/src/injected/агент-записи.js · apps/desktop/test/синхронизатор-ядра-пишет-только-человека.js
- Окна ARMANOS Browser действительно переезжают в сетку, и это измерено изнутри страниц
- apps/desktop/src/main/main.js · apps/desktop/test/раскладка-живьём.js
- Сетка считается сразу для обоих движков и отказывает при слишком мелкой клетке
- apps/desktop/src/main/main.js · apps/desktop/test/window-places.js
- На ARMANOS Browser вкладки прошлого раза возвращаются так, как выбрано в его настройках, а стартовая страница и адрес профиля не открываются второй раз
- apps/desktop/src/lib/сеанс-форка.js · apps/desktop/test/вкладки-не-копятся-между-запусками.js
Вопросы
- Сколько профилей должно быть открыто?
- Не меньше двух, и они должны быть уже запущены. Если их меньше, программа скажет об этом и отправит к списку профилей, а на тарифе с одним профилем к тарифам.
- Что будет, если закрыть ведущее окно?
- Сеанс прекращается целиком. Пропавший целевой профиль просто выбывает из набора, а когда исчез последний, сеанс завершается сам, а не повторяет действия в пустоту.
- Можно вести два сеанса разом?
- Нет. Запуск нового сеанса останавливает прежний, поэтому забытого второго ведущего окна не бывает.
- Что остаётся после остановки?
- На диск о сеансе не попадает ничего. Слушатели записи на странице ведущего окна снимаются сразу по остановке на обоих движках, а повторный запуск на той же странице ставит их один раз. На Маке ваш буфер обмена после каждой вставки возвращается таким, каким был, а если вы успели скопировать новое, пока целевые окна вставляли, остаётся ваше новое, и целевое окно набирает свой текст клавишами.
- Окна должны быть одного размера?
- Нет. Нажатие сначала целится в элемент, а запасные доли целевой профиль разворачивает по своей ширине и высоте, а не по размеру ведущего окна.
Попробуйте на двух профилях
Откройте два профиля, выберите ведущего, отметьте второй и запустите. Остановка в одно нажатие.