Задать вопрос
Ответы пользователя по тегу Автоматизация
  • Что использовать для автоматизаций действий в браузере в параллельном или многопоточном режиме?

    @rPman
    c# а точнее .net в поставке имеет контрол WebBrowser, это полноценный браузер (раньше был интернет эксплорер, сейчас хз edge это или уже на webkit, если использовать mono то это будет firefox), с ним невероятно просто работать, хотя на практике вместо того чтобы ковыряться в DOM документа средствами .net лучше это делать внедрив javascript внутрь страницы.

    Выглядит работа примерно так, кидаете на форму контрол, на событие onload получаете доступ к документу webControl.document, дальше это уже браузерные dom методы. Совет, вместо добавления script на страницу лучше запускайте ее по таймеру .setInterval с нулевым интервалом, тогда скрипт будет запущен в контексте страницы а не какой то песочницу .net хотя последнее возможно подойдет для многопоточного доступа (осторожно контрол не предполагает многопоточность, но вы можете по ксперементировать, открыв несколько контролов и работая с ними из разных потоков, отпишитесь о результатах)

    Этот способ на порядок эффективнее силениум, так как отсутствует посредник, но все же ресурсы будут использоваться как на полноценный браузер (правда чуть меньше чем оригинальный)
    Ответ написан
    Комментировать
  • Как "организовать" скрипт действий на сайте?

    @rPman
    2 кардинально разных подхода:

    * вы изучаете, какие запросы совершает браузер, когда вы совершаете действия настранице (в браузере F12 закладка network, там можно на строке правую кнопку нажать и получить готовую команду утилиты curl к примеру), изучаете что из себя представляет запрос, выделяете параметры (что есть идентификатор сессии, что номер поста и т.п. - эмпирически и следуя логике как вы бы сами как програмист сделали) а затем повторяете все то же самое или только необходимое (например можно не грузить картинки стили и прочее) на любом языке програмирования, скорее всего загружая страницы придется их парсить, разбирать ссылки чтобы знать какие параметры подставлять в следующие запросы.

    * используя расширение к барузеру (например greasemonkey/tempermonkey), либо используя headless браузер типа silenium с подключением к вашему любимому языку или напрямую однократно добавив функции в консоли браузера (если сайт single page app без перезагрузки страницы) - полезно на время отладки, написать необходимый код прямо на javascript. Например чтобы кликнуть на ссылку достаточно написать $('css селектор до ссылки/кнопки').click()

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

    Но если сервер противится таким технологиям то либо начинаете великую битву меча и щита, либо остается только второй подход. Код второго подхода обычно проще, анализировать сайт потребуется меньше, особенно это актуально при поддержке таких скриптова автоматизации, когда сайт обновляется или меняется дизайн. Второй подход на стороне сервера почти невозможно выявить, так как действия полностью идентичен действиям пользователя, особенно если кликать не сразу а по таймауту, симулировать скроллинг и движения мыши. Недостаток - очень высокая нагрузка на процессор и память машины с симулятором, ведь каждый парсер это полноценный браузер (особенно если вам надо использовать прокси одним инстансом вы не отделаетесь)
    Ответ написан
    1 комментарий
  • Возможно ли синхронизировать действия на ПК? Управлять несколькими ПК одновременно?

    @rPman
    Кажется у vnc я видел какую то прокси с таким функционалом, но очень очень давно и под linux.

    Не уверен что это в принципе работоспособная идея, так как разные машины даже с одним и тем же железом и набором софта могут реагировать по разному, пример - вы кликаете открыть программу, нажать на кнопку в ней, закрыть программу, на 10 машинах у вас все ок а на 11-ой программа открывалась чуть дольше и кнопка не успела нажаться, зато успешно закрылась.

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

    @rPman
    создаете список ваших архивов в виде текстового файла, каждый файл в новой строке
    создаете xxx.bat файл:
    @echo off
    for /f %%a in (путь_и_имя_файла_со_списком_файлов) do "c:\program files\7-zip\7z.exe" e "%%a" *.pdf

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

    7z.exe x ... - будет распаковать файлы с каталогом в архиве, в котором они находятся

    for /r c:\dir %%a in (*.7z) do .... - будет искать все архивы в каталоге c:\dir и его подкаталогах (т.е. файл со списком архивов не надо будет создавать)
    Ответ написан
    6 комментариев