10.Облегчаем работу с JavaScript. Выводим данные на монитор.

 

Пришло время облегчить написание кода.

Во-первых, тот редактор для кода, который дает нам аймакрос по умолчанию не удобен. Я рекомендую установить Notepad++

После установки нужно указать аймакросу что бы он открывал наш нотепад вместо редактора по умолчанию.

Для этого зайдем во вкладку Manage, откроем опции, поставим галочку «Использовать внешний редактор» и нажмем на маленькую папочку напротив него, чтоб найти файл запуска устаноленного нотепада «notepad++.exe»

у меня путь такой

C:\Program Files (x86)\Notepad++\notepad++.exe

(можете просто скопировать путь, скорее всего и у вас будет такой же)

 

2015-12-08 16-19-48 Винда 7(64x) [Работает] - Oracle VM VirtualBox

Затем нажимаем кнопку Apply внизу странички.

Теперь при нажатии при редактировании наших скриптов будет открываться удобный текстовый редактор нотепад++

Еще советую использовать такой ход. При разаработке очередного скрипта, создавайте отдельный файлик. В нем отрабатывайте, экспериментируйте, а потом переносите в основной код. Что мы сейчас и сделаем. Открываем папку C:\iMacros\Macros\Обучение и создаем там файл «тренировочный.js» Сразу он не появится у нас в каталоге на панели аймакроса. Нужно закрыть на крестик панель, потом заново открыть аймакрос по кнопке. Или перезагрузить браузер.

После нажимайте правой кнопкой на «тренировочный.js» и выбирайте «редактировать»

Всплывает пустой текстовый документ в нотепаде. Отлично. Пришло время познакомиться с парочкой очень важных команд.

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

Если вы скопируете строку в наш тренировочный файл и сохраните ее, то при запуске скрипта вы увидите следующее:

2015-12-08 16-44-54 Винда 7(64x) [Работает] - Oracle VM VirtualBox

Возможно вы увидите кракозябры. Это потому что аймакрос работает с UTF-8 кодировкой, а ваш файлик сохранился скорее всего в другой кодировке. Не беда, откройте еще раз скрипт, в меню нотепада выберите кодировки/преоброзовать в UTF-8 И сохраните файл

2015-12-08 16-47-39 Винда 7(64x) [Работает] - Oracle VM VirtualBox

Это очень важная команда. Выводить на экран можно значения переменных, и циклов, и еще много чего. При этом аймакрос работает дальше. Но что делать если нам нужно остановить программу и прочитать значение? Для этого я использую такую команду:

Можете скопировать эту команду в тренировочный файл и посмотреть результаты.

Ну и теперь вернемся к нашему ТЗ. Предлагаю доработать код таким образом, чтоб на мониторе отобразался счет цикла и запрос, который мы выбрали из файла:

Весь код остался без изменений кроме 7 ,8 и 9 строк. Строка 8:

означает что в этом месте мы создаем переменную

в корорую помещаем

Это такая заморочка аймакроса, если есть команда EXTRACT то вытащить ее в джаваскрипт нужно командой iimGetLastExtract(1), если бы EXTRACT-ов было больше, то для обращения к каждому из них нужно изменять порядковый номер в скобочках: iimGetLastExtract(2), и т.д. Мы вернемся к этому более глубже когда будем работать с таблицами. Именно для того чтоб вытащить данные в джаваскрипт, пришлось добавить и 7 строку:

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

строка 9:

выводит на наш зеленый дисплейчик такие знаки: «слово «строка», 3 пробела, значение переменной i, 3 пробела,  слово «запрос» ,  пробел,  значение переменной zapros»

Почему так? Как уже говорилось строка в джаваскрипте берется в кавычки. Тоесть то, что в кавычках выводится познаково, включая пробелы. Знаки + обозначачют сцепить элементы. Дальше вы к этому привыкните. А пока запустите наш код, посмотрите как это работает. Затем попробуйте изменть код так, чтоб на дисплее перед словом «запрос» выводилась запятая.

Перейти к следующему уроку!

  14 комментариев to “10.Облегчаем работу с JavaScript. Выводим данные на монитор.”

  1.  

    Мэр Киева , Кличко , просто отдыхает по сравнению с автором….ну и словоблудство….

  2.  

    Есть команда что-то типа переноса строки, что бы выводить сообщения построчно? Использование пробелов вопрос не решает, бывает сдвиг из-за изменения разрядности чисел.

    •  

      перенос строки — ‘/n’
      чтоб массив вывести с переносом строки —
      var arrEMAIL=[1,2,3,4,5]
      var arrTxt = arrEMAIL.join(«\n»)
      iimDisplay(arrTxt)

  3.  

    Чтобы увидеть только что созданный файл не нужно перезапускать iMacros, а тем более браузер
    Достаточно нажать на кнопочку «Обновить список» во вкладке «Manage»

  4.  

    Здравствуйте.Подскажите, как задать условие, если скрипт доходит до определённой команды и она не выполняется, то он возвращается на предыдущую команду. Спасибо

    •  

      Вариантов конечно же множество, нужно смотреть что в вашем случае лучше применить.
      Как самый простой способ? это поставить условие на команду аймакроса. Оно работает по такому принципу: Если код аймакроса выполнился, то возвращается целое число >0, если не выполнился, то <0. Этот код макроса может быть - нажатие на кнопку, проверка на какой-нибудь элемент на странице и так далее
      Например на этой странице есть ссылка под видео -"Перейти к следующему уроку" Нам нужно проверить можем ли мы ее нажать. Для этого:
      Ставим аймакрос на запись и записываем нажатие на нее:
      TAG POS=1 TYPE=A ATTR=TXT:Перейтикследующемууроку!

      Затем с ее помощью составляем такую конструкцию:

      if(iimPlayCode(‘TAG POS=1 TYPE=A ATTR=TXT:Перейтикследующемууроку!’)>0){
      //тут пишем код который должен выполняться если ссылка на этой странице есть
      }
      else {
      //тут пишем код если ссылки на этой странице нет
      }

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

  5.  

    Спасибо за быстрый подробный ответ

  6.  

    Пока разбираюсь с вашим ответом, скажите, если FRAME при обновлении страницы постоянно изменяется, можно это как-то обойти imacros. Спасибо

    •  

      FRAME имеет скорее всего имеет имя. Можно его выдернуть из кода страницы джаваскриптом, например:
      win = window.document.documentElement.innerHTML.split('iframe name="')[2].split('"')[0]
      и тогда далее уже работать с этим именем в аймакрос команде:
      iimPlayCode('FRAME NAME="'+win+'"\nONDIALOG POS=1 BUTTON=OK CONTENT=\nEVENT TYPE=CLICK SELECTOR="#recaptcha-audio-button" BUTTON=0\nWAIT SECONDS=3')

  7.  

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

  8.  

    Извините, что надоедаю вам, вы бы не могли наглядно показать код макроса для вашего примера.Буду очень вам благодарна. Спасибо

  9.  

    Спасибо Вам огромное за уроки!

  10.  

    Здравствуйте!
    Такой вопрос
    иде по уроку
    и под конец такая проблема
    на экран выводит корректно только первый запрос
    далее идет null
    в чем проблема?

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