Многопоточность в Human Emulator Studio. Изолированные закладки.

Многопоточность в Human Emulator Studio. Изолированные закладки.

Что такое изолированные закладки браузера мы уже писали ранее в статье Изолированные браузеры в закладках Human Emulator Studio . В этой статье мы подробнее разберём многопоточный запуск одного простого скрипта в разных закладках одного exe программы.

Итак, начнём по порядку. Первое что нужно сделать это выставить соответствующую настройку в программе для этого в настройках программы во вкладке Браузер ставим галочку Изолированные Браузеры в закладках.

Работа с server_tab в PHP.

Для работы с изолированными закладками используется переменная server_tab, с помощью которой мы и говорим программе в какой закладке нужно выполнить скрипт.

Далее подготовим, скрипт который будем запускать в закладках. Скрипт на php будет выглядеть так:

Что делает этот скрипт — выполняет навигацию на Яндекс, вбивает текст с номером закладки и нажимает на кнопку найти.

Стоит обратить внимание на строки $PHP_Use_Trought_Shell=false; и $tab = $argv[1];.

$PHP_Use_Trought_Shell=false; — этот параметр говорит о том, что скрипт будет запускаться не из программы. Если не выставить этот параметр как false, то скрипт не будет работать как надо.

$tab = $argv[1]; — это аргумент командной строки. Через него мы будем говорить программе в какой закладке запускать текущий скрипт.

Запуск этого скрипта можно выполнять из bat файла. Для этого в bat файле указываем путь к php, путь к php.ini, путь к скрипту на выполнение. Обязательное условие в программе должны быть заранее открыты необходимое количество закладок.

Всё это можно выполнить скриптом из Human Emulator Studio. Скрипт для запуска потоков на php :

Открываем нужное количество закладок в программе с помощью команды:

В обоих скриптах мы не используем функцию объекта app quit, так как выполнение этой команды прекратит выполнение всех скриптов. Обращаем ваше внимание на то, что скрипт запуска потоков в отдельных закладках не будет ждать завершения работы всех запущенных им скриптов, а выполнив запуск bat файла остановиться. Если вам надо из этого скрипта ожидать завершения выполнения всех скриптов, то для этого например можно использовать проверку на появление файлов.

Для ожидания завершения всех потоков из основного скрипта изменим наши скрипты следующим образом:

скрипт для потока:

Порт в скрипте должен совпадать с портом программы.

В Python и JavaScript делаем аналогичным образом, только скрипты соответственно выполняем на этих языках.

Работа с server_tab в C#.

Если в Python и JavaScript исполнение скриптов будет аналогично тому как это сделано в php, то в C# нам придётся использовать класс XHEScriptMulti.

В этом случае скрипт для одного потока будет выглядеть следующий образом:

Этот скрипт нужно обязательно выполнить в программе, что бы в папке со скриптом появился exe файл thread.exe. В процессе выполнения возникнут ошибки, их надо будет просто проигнорировать.

Скрипт для запуска отдельных потоков в закладках. В отличие от php тут мы будем через команду объекта app shell_execute запускать exe скрипта для каждого потока — thread.exe. В качестве параметров зададим путь к скрипту debug.get_cur_script_folder()+»//thread.exe» и номер закладки в параметрах «0 «.

Скрипт для запуска потоков в закладках на C# будет таким:

В результате работы скрипта увидим следующую картинку:

Обсудить статью и скачать примеры можно на нашем форуме


Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.