Лайфхаки BAS

Pinned Moved LifeHacks
  • Грубый хак, который убирает надпись ожидание элемента. Этот код надо выполнить через действие "выполнить код", где-то вначале скрипта, до браузерных действий.


    without_waiting.xml

  • @GamiD said in Лайфхаки BAS:

    Конвертор BAS Cookie для Google Chrome расширения EditThisCookie
    Проверял на mail.ru, facebook.com и еще на нескольких сайтах возможно есть сайты на которых не будет работать

    0_1563099815733_BasCookieToChromeEditThisCookie.xml

    Есть обратный конвертер кук?
    Из обычного текстового формата в БАС, со всеми параметрами.

  • @BeerMaster вот
    LogCookieToBASCookie.xml
    Конвертирует cookie из логов
    fa33ff7b-7167-4672-8d4a-71373f6556f1-image.png

  • Не знаю или сюда относить или в другое место , но у меня возникал потребность настроить разгадывание какпчи под разные сервисы в том числе и под капмонстер для которого нужно вводить урл сервера если он на другом сервере находится. Так вот использовал для уникализации прописания переменных тернарный оператор , удобно и один кубик выполняет поставленную задачу для всех сервисов.
    скрин прилагаю. Тернарник работает как для рекапчи так и для простых капч.

    alt text

  • @Fox said in Лайфхаки BAS:

    PROGRESS

    @support Прогресс бар перестал работать

  • @m1st поддерживаю прогресс бар дальше 1го не идет

  • This post is deleted!
  • Если машина не оч сильная, или скрипт большой - вообщем если в записи при редактировании скрипта система слегка подвисает, лучше кубики на редактирование открывать не двойным кликом (потому что бас по каким то причинам его помимо открытия копирует в место где стоит курсор - потом в запуске ловим ошибки), а нажатием правой кнопки мыши и "редактировать",

  • Есть небольшой лайфхак, что бы действие "Спать" могло выполнить значение меньше 1000мс (без использования ноды)

    d993025a-a813-4caf-99eb-ce0403a17d5a-изображение.png

    support528.gif

    Нужно прописать в файл settings.ini

    \BrowserAutomationStudio\apps\23.1.1\settings.ini
    

    параметр MultiTimerTimeout значение 100 или любое другое меньше 1000

    Пример файла settings.ini

    Но если события мультитаймера будут происходить очень часто, это сильно снизит производительность (очень низкие значения лучше не ставить)

  • Управление количеством потоков.

    На случай, если кому то нужно управлять количеством потоков во время работы скрипта, я создал пример реализации управления количеством потоков из текстового файла с использованием модуля "Асинхронный вызов функции":

    support600.gif

    Скрипт

  • @Antonio said in Лайфхаки BAS:

    function _sa(id)
    {
    log(id)
       ScriptWorker.SetCurrentAction(id)
    }
    

    После этого когда в лог начинают выводиться id всех выполняемых действий. Потом можно однозначно прочесть последовательность всего произошедшего. Помогало мне жесткие баги отлавливать.
    Лучше включать только для дебага! (если действий много в скрипте).

    @romanbiz, я так понимаю, что это твой пункт 6 "по-умному".

    В новых версия использование этого кода приводит к тому, что скрипт невозможно запустить после остановки редактирования.
    Скрипт не запускается не в режиме записи, не в режиме запуска. Более того, у кого-то удаляется большая часть действий скрипта.
    Для тех, кто столкнулся с проблемой - ищите в бэкапах версию скрипта, в которую вы не вносили эту функцию.

  • @Sadzurami said in Лайфхаки BAS:

    @Antonio said in Лайфхаки BAS:

    function _sa(id)
    {
    log(id)
       ScriptWorker.SetCurrentAction(id)
    }
    

    После этого когда в лог начинают выводиться id всех выполняемых действий. Потом можно однозначно прочесть последовательность всего произошедшего. Помогало мне жесткие баги отлавливать.
    Лучше включать только для дебага! (если действий много в скрипте).

    @romanbiz, я так понимаю, что это твой пункт 6 "по-умному".

    В новых версия использование этого кода приводит к тому, что скрипт невозможно запустить после остановки редактирования.
    Скрипт не запускается не в режиме записи, не в режиме запуска. Более того, у кого-то удаляется большая часть действий скрипта.
    Для тех, кто столкнулся с проблемой - ищите в бэкапах версию скрипта, в которую вы не вносили эту функцию.

    Я сам периодически эту функцию использую в некоторых скриптах, ни разу не было с ней проблем. Только функцию нужно вынести в переменную, что бы она не переопределялась обратно после некоторых действий (например после действия "загрузить")

    _sa = function(id)
    {
        log(id)
        ScriptWorker.SetCurrentAction(id)
    }
    

    Тестовый скрипт 493.xml

  • @Fox said in Лайфхаки BAS:

    @Sadzurami said in Лайфхаки BAS:

    @Antonio said in Лайфхаки BAS:

    function _sa(id)
    {
    log(id)
       ScriptWorker.SetCurrentAction(id)
    }
    

    После этого когда в лог начинают выводиться id всех выполняемых действий. Потом можно однозначно прочесть последовательность всего произошедшего. Помогало мне жесткие баги отлавливать.
    Лучше включать только для дебага! (если действий много в скрипте).

    @romanbiz, я так понимаю, что это твой пункт 6 "по-умному".

    В новых версия использование этого кода приводит к тому, что скрипт невозможно запустить после остановки редактирования.
    Скрипт не запускается не в режиме записи, не в режиме запуска. Более того, у кого-то удаляется большая часть действий скрипта.
    Для тех, кто столкнулся с проблемой - ищите в бэкапах версию скрипта, в которую вы не вносили эту функцию.

    Я сам периодически эту функцию использую в некоторых скриптах, ни разу не было с ней проблем. Только функцию нужно вынести в переменную, что бы она не переопределялась обратно после некоторых действий (например после действия "загрузить")

    _sa = function(id)
    {
        log(id)
        ScriptWorker.SetCurrentAction(id)
    }
    

    Тестовый скрипт 493.xml

    благодарю
    в таком виде данная функция проблем не вызвала

  • Сделал небольшой js скрипт, который перехватывает на сайте все копирования сразу в переменную в обход буфера обмена

    Вставить в действие "Выполнять при каждой загрузке страницы в браузере":

    window.copyText;
    document.addEventListener("copy", function (e) {    
        copyText = e.target.value;
        e.preventDefault();
    });
    

    После того как вы на сайте скопировали текст, вставьте в действие "Яваскрипт":

    copyText
    

    и вы получите скопированный текст в переменную

  • Сегодня узнал о существовании метода BAS для определения имени файла лога Logger.GetFileName() :D

    На случай, если кому то будет необходимо, использовать в действии "выполнить код":

    [[FILE_NAME]] =  Logger.GetFileName()
    
  • @Fox said in Лайфхаки BAS:

    Сегодня узнал о существовании метода BAS для определения имени файла лога Logger.GetFileName() :D

    На случай, если кому то будет необходимо, использовать в действии "выполнить код":

    [[FILE_NAME]] =  Logger.GetFileName()
    

    Нужная вещь, я в веб интерфейсе, сначала получал весь лог, затем писал его на диск, потом открывал )

    Теперь можно просто получить путь и открыть сразу

  • @Fox said in Лайфхаки BAS:

    [[FILE_NAME]] = Logger.GetFileName()

    а еще его можно очистить с помощью

    Logger.Clear()
    

    Или указать свой путь для записи лога

    Logger.SetFileName("C:/project/new_log.txt")
    

    Но меня больше интересует, как можно писать в лог удаленно? есть какое-то апи?

    upd:

    Вот нашел возможность писать в лог

    Logger.Write('test')
    

    Как бы это использовать удаленно? через командную строку, запись файла или как-то ещё.

  • @graf said in Лайфхаки BAS:

    Как бы это использовать удаленно? через командную строку, запись файла или как-то ещё.

    Удалённо точно ни как не получится использовать

  • @Fox said in Лайфхаки BAS:

    Удалённо точно ни как не получится использовать

    Ну почему )) Можно вместе с бас стартовать сервер, который будет писать в лог. Только накой такой изврат может пригодиться...

  • @UserTrue

    С помощью бас запускаю веб сервер на локалке, на котором в цикле крутится скрипт PHP, вот мне нужно из этого скрипта отстукивать в лог. Вчера ковырял дебаг бас, который запускается в хром, работает на веб сокете и все его действия транслируются в лог программы. По всей видимости как-то можно использовать удаленный лог. Есть конечно и костыльный вариант, писать в файл с помощью пхп, а в ассинхронной функции бас читать этот файл и выводить в лог, но это уже крайний вариант