Логика при записи скрипта.


  • administrators

    @Turutur said in Логика при записи скрипта.:

    Очень хочется видеть не линейное построение шаблона - так как я не могу задать цикл одновременно для двух массивов - то возможно параллельный запуск циклов?

    Объеденить 2 списка проще простого. Сделать цикл по первому, в нем брать элемент со второго и присоединять к [[FOREACH_DATA]].

    Та и все. Вот проект mergelists.xml



  • @support said in Логика при записи скрипта.:

    Объеденить 2 списка проще простого. Сделать цикл по первому, в нем брать элемент со второго и присоединять к [[FOREACH_DATA]].
    Та и все. Вот проект mergelists.xml

    Сегодня полдня ломал голову, что Вы указали в примере - это совсем не то о чем идет речь! Причем здесь объединение данных двух списков - списки здесь вовсе не причем!!! Речь идет о параллельном запуске двух ЦИКЛОВ - по разным параметрам - это очень необходимо, чтобы не писать взятые значения с цикла в файл, а держать его в присвоенной переменной. Может я реально не так объясняю???!!! - Просто е действие не могу второй день сделать!!! Покажите на примере пожалуйста:

    у меня такая задача - с страницы http://hideme.ru/proxy-list/#list - начать цикл по первому и второму столбцу "IP адрес" и ПОРТ - взять значение IP с первой ячейки первого столбца - сохранить в переменную, взять порт спервой ячеки второго столбца - сохранить в переменную - записать в файл в виде переменнаяIP:переменнаяПОРТ. Чтобы именно так получилось - без предварительной записи a разных файлах отдельно ip отдельно порт - покажите как реализовать


  • administrators

    @Turutur Можно сохранить ип в один список, потом сохранить порты в другой список а потом объединить их используя мой пример.



  • Ладно здесь все понятно - делаем что можем - возникла далее такая ситуация - так как выдача идет постраничная - то соответственно в цикл включаем клик по кнопке для перехода на следующую страницу и парсинг - задача получить данные со всех страниц выдачи по запросу - НО на этом скрипт не должен остановиться, а должно произойти следующее - если клик по кнопке следующей страницы не произведен, так как страницы закончились - то выполняем следующее действие - обработку данных - я реально не догоняю как использовать логику - как то очень сложно реализована для понимания!

    И еще пожалуйста объясните на примере чем файл отличается от списка?? И как и в каком случае это используется и почему в списке только 3 значения?

    И еще пожалуйста, очень прошу - сделайте уже какой то способ, чтобы можно было просматривать содержимое переменных и листов.

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


  • administrators

    @Turutur said in Логика при записи скрипта.:

    Ладно здесь все понятно - делаем что можем - возникла далее такая ситуация - так как выдача идет постраничная - то соответственно в цикл включаем клик по кнопке для перехода на следующую страницу и парсинг - задача получить данные со всех страниц выдачи по запросу - НО на этом скрипт не должен остановиться, а должно произойти следующее - если клик по кнопке следующей страницы не произведен, так как страницы закончились - то выполняем следующее действие - обработку данных - я реально не догоняю как использовать логику - как то очень сложно реализована для понимания!

    Есть действие "Игнорировать Ошибки", софт продолжит работу, если возникнет исключение, к тому же у вас будет возможность его обработать использовав переменные WAS_ERROR и LAST_ERROR. http://wiki.bablosoft.com/doku.php?id=ru:how_to_catch_errors
    Вроде все просто. Если знаете способ проще - скажите, я попробую его реализовать.

    И еще пожалуйста объясните на примере чем файл отличается от списка?? И как и в каком случае это используется и почему в списке только 3 значения?

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

    И еще пожалуйста, очень прошу - сделайте уже какой то способ, чтобы можно было просматривать содержимое переменных и листов.

    Этот функционал уже есть 2 последних версии. https://www.youtube.com/watch?v=UBgpWayk0SU

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

    Прокрутка работает нормально. Но на сайте hideme.ru разработчики переопределили системную функцию scrollTo именно из-за этого БАС не работал с этим сайтом. Сам баг я исправил несколько дней назад.
    http://bablosoft.com/distr/BrowserAutomationStudioDevelopment/15.1.0/BrowserAutomationStudioInstallAllInOne.exe



  • Спасибо - большое за исчерпывающие ответы!



  • @support said in Логика при записи скрипта.:

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

    Очень прошу - сделайте пожалуйста нормальный пример со списком - как туда добавить больше трех значений - ?

    Я делал так - создаю список в переменную NEW_LIST - затем получаю текст в переменную - PROXY_ID - затем добавить элемент в список - выбираю список - выбираю добавляемую переменную - и все это обернуто в цикл! - в результате только одно значение IP в списке??? Как использовать список, как буфер обмена - для сохранения массива данных и дальнейшей обработки - пожалуйста на примере


  • administrators

    @Turutur said in Логика при записи скрипта.:

    и все это обернуто в цикл!

    Нужно вынести действие создать список за цикл. В цикле должно остаться только добавление в список, но не его создание.



  • @support said in Логика при записи скрипта.:

    Нужно вынести действие создать список за цикл. В цикле должно остаться только добавление в список, но не его создание.
    Спасибо все получилось!



  • Не срабатывает логика - "Игнорировать ошибки" - ситуация следующая - внизу страницы есть кнопки для перехода между страницами выдачи - в виде цифры и стрелки вправо - делаю следующее - прокручиваю к элементу стрелки вправо - навести и нажать на класс правой стрелки(дождаться полной загрузки страницы) - и следующий блок "игнорировать ошибки" - так вот - например на выдаче 2 е страницы - нажатие стоит в цикле и блок игнора ошибки тоже - при первом витке цикла все срабатывает нормально - так как ошибки при нажатии на правую стрелку нет - но при переходе на вторую страницу - стрелка вправо исчезает - действие невыполняется очень долго - а потом скрипт останавливается и выдается сообщение, что не удалось дождаться цcc правой стрелки - что не так делаю? ведь по сути - зачем ждать появление элемента - если действие идет на клик, а страница загружена полностью. Как быть?


  • administrators

    @Turutur said in Логика при записи скрипта.:

    и следующий блок "игнорировать ошибки"

    Действия, в которых игнорируются ошибки должны внутри "Игнорировать ошибки", а не перед ним.

    Как быть?

    Проверять существует ли стрелка вправо, и если она существует - завершать цикл.



  • @support said in Логика при записи скрипта.:

    Проверять существует ли стрелка вправо, и если она существует - завершать цикл.

    Логика программы меня реально в тупик загоняет - не могу срастить - админ - если не сложно сделай туториал по логике используемой в циклах - у меня просто платы в голове уже перегорели( - вот проект - в чем ошибка? - почему блок IF и не выполняется? - вернее игнорируются действия внутри блока: 0_1471607938317_proxi_parse_hideme.xml

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


  • administrators

    @Turutur

    если не сложно сделай туториал по логике используемой в циклах

    Пожалуйста:
    http://wiki.bablosoft.com/doku.php?id=ru:is_it_possible_to_use_loops
    http://wiki.bablosoft.com/doku.php?id=ru:is_it_possible_to_execute_certain_action_depending_on_condition_if_statement

    Я не вижу блока if в вашем проекте, поэтому не могу ответить на ваш вопрос.
    0_1471679886130_Foreach.png

    Foreach должен получать на вход переменную типа список. CYCLE_INDEX - это номер. Так что работать не будет. Сделайте просто бесконечный цикл(от 1 до 10000) и завершайте его, когда нету кнопки перехода на следующую страницу.

    Так же действие "Игнорировать ошибки" не содержит внутри себя ничего, поэтому не имеет смысла.



  • Я сильно извиняюсь не тот проект скинул - просто очень много чего пробывал - ниче не срабатывает - вот проект - где в цикле используются значения логики 0_1471692349011_proxi_parse_hideme - копия.xml - они так же не срабатывают - как и сама логика



  • @support said in Логика при записи скрипта.:

    Сделайте просто бесконечный цикл(от 1 до 10000) и завершайте его, когда нету кнопки перехода на следующую страницу.

    Это как? - как это реализовать то? Допустим я проверяю наличие элемента - если он есть переменная получает результат true - и что с этого как дальше поступить по чему вообще цикл начинать = как его останавливать - как работать с условиями - вы программист - Вам может это очевидно - я вроде не даун - но третий день пытаюсь разобраться в логике - по сути - логика - это цепочка последовательных умозаключений - в БАСе они отсутствуют - последовательные умозаключения - - нормально пожалуйста покажите как реализовать логику - по русски - на русскоязычном проекте пожалуйста!!!!


  • administrators

    @Turutur Отличный проект!
    Чтобы все заработало нужно заменить условие в цикле с
    [[IS_EXISTS]] == "true" на [[IS_EXISTS]]
    и обновлять переменную IS_EXISTS в конце цикла.

    Вот так:

    0_1471715449842_FixProject.png



  • @support said in Логика при записи скрипта.:

    Отличный проект!
    Чтобы все заработало нужно заменить условие в цикле с
    [[IS_EXISTS]] == "true" на [[IS_EXISTS]]
    и обновлять переменную IS_EXISTS в конце цикла.

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

    0_1471735543891_2016-08-21_101150.png


  • administrators

    @Turutur У меня работает отлично. Скорее всего отредактировали действие вот этой кнопкой, а она меняет только название.

    0_1471736307840_EditNameButton.png



  • )) Спасибо - я уже который раз на этом попадаюсь) Спасибо! Все заработало



  • @support пожалуйста объясните - как сделать следующее условие - например - есть входные настройки - ресурсы - от их наличия зависит конечная ссылка для загрузки - она собирается исходя их наличия или отсутствия данных в ресурсах - делал так

    if - проверяю наличие данных [[variable]]!='' - внутри блока присваиваю переменную и значение - и блок с успехом выполняется, если есть водные данные в ресурсе, но вся загвоздка в том - как сделать обратную сторону - если данных нет.

    Что такое блок else - и почему он не включается, если не был задан в блоке if изначально - а устанавливается после - при повторном открытии блока для редактирования??? То есть как всегда нужно элементарное решение - если данные есть присваиваю значение переменной - а если нет - тоже присваиваю значение но пустое...

    а конце работы скрипта идет сбор ссылки для перехода в формате http://site.zone/[[var1]][[var1]]


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.