>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >iMacros http://forum.mozilla-russia.org/viewforum.php?id=42 >Мини FAQ по iMacros for Firefox http://forum.mozilla-russia.org/viewtopic.php?id=66458 |
InfSub > 21-01-2015 02:50:36 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Мини FAQ по iMacros for Firefox by: InfSub Где почитать: Версии iMacros и Firefox: Mozilla Firefox (все версии) (ftp) Mozilla Portable (все версии) Видео по настройке и использованию:
Основы создания и редактирования iim-скриптов (video by: kolshix) Основы считывания текстовой информации в iMacros (video by: kolshix) Работа с прокси-серверами в iMacros (video by: kolshix) Запуск независимых копий браузера (Pale Moon, Mozilla Firefox) (video by: kolshix) Обработка ошибок в iMacros:
Работа с ошибками: 1.2.2 - Обработка ошибок с помощью js (video by: kolshix) Управляющий JavaScript: Как запустить один скрипт из другого:
данный адрес - альтернативный, т.к. официальный более не работает
Не рекомендуется запускать js из js, если вы не понимаете принципа работы данной конструкции и не готовы отлавливать баги, связанные с ней. Для тех, кто все же, решил попробовать, могу сказать только одно, не ждите от данного метода - последовательного запуска из одного js-скрипта - нескольких js-скриптов, его нет и не будет. где:
file.js или file.iim - имя файла 1 для iimPlay() - путь до файла, может быть полным Модификаторы:
Используется в ситуациях, когда требуется в любом случае выполнить скрипт, даже если часть команд выполнилась с ошибками Для любителей бездумно копировать чужие ляпы и фейки, еще раз повторяю, такой опции уже НЕ СУЩЕСТВУЕТ!, начиная с iMacros 7 версии (да и в последней 6 версии, она тоже не работает)Подробнее тут: !ERRORIGNORE vs !ERRORCONTINUE Вкл./выкл. режима показа всплывающего окна с результатом извлечения данных со страницы:
Всплывающие окна требуются при написании и тестировании iim-скриптов. При цикличном запуске iim-скрипта, либо при запуске из управляющего js-скрипта, эти окна не отображаются. Данная опция используется для отключения показа тестовых окон для iim-скриптов, действие которых, не зациклено и выполняется единожды (нажатием кнопки "Воспроизвести"). Скорость воспроизведения макроса (быстро/нормально/медленно):
* Режим, используемый по умолчанию - подчеркнут! iMacros + JS: Есть несколько js-функций для работы с iim-кодом: iimDisplay ("Ваш комментарий") iimPlay ("файл или код")или iimPlayCode ("код") iimSet ("имя iim-переменной", "значение") Описание и примеры использования: скрытый текст iimDisplay ()
iimPlay () - отправляет iim-файл или iim-код на выполнение.
iimPlay ("Test\\macro") - относительный путь* от папки макросов до iim-файла (указывать расширение файла (.iim), при этом, не обязательно); iimPlay ("CODE:URL GOTO=....") - отправка iim-кода. * При использовании в JS, обратные слеши "\" - должны быть экранированы еще одним обратным слешем (актуально для OS Windows). iimPlayCode () - отправляет iim-код на выполнение.
iimSet () - инициализирует переменные в iim-файле или iim-коде и передает им значения из js-скрипта.
В связи с тем, что переменная !LOOP не работает, при запуске из js, iimSet() - позволяет её заменить ** Нельзя передать значение уже инициализированным переменным, таким как: !VAR0-!VAR9 и любым другим, начинающимся со знака ! Дополнительные возможности: запуск внешней программы с аргументами из js-скрипта: Данный способ, по сути, является хаком и может не работать в некоторых версиях Mozilla Firefox и в браузерах на его основе! Используйте данный способ на свой страх и риск! InfSub code by: okkamas_knife Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст. Выделить код Код:var prgpath="C:\\windows\\ping.exe"; // путь до исполняемого файла, не забываем про двойные косые в пути ... // ... (экранирование обратного слеша "\\" при записи пути до exe-файла в OS Windows) var args = ['-n','6', 'google.com']; // аргументы, все разделены пробелом. т.е. строка bla.exe -open "c:\\program files\\ololo\\ololo.txt" ... // ... будет иметь аргументы var args = ['-open','"c:\\program', 'files\\ololo\\ololo.txt"']; var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(prgpath); var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length); Javascript Key Codes:
to be continued... | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 29-09-2015 01:12:00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
баг функций iimGetLastExtract() и ее аналога iimGetExtract() 29-09-2015 01:13:53 перезапуск FF с помощью iMacros+cmd Делаешь через определенное время, или через определенное число циклов, запуск батника и стоп скрипта(желательно) В батнике такую конструкцию Ждем пару (5-10) сек Для паузы используй команду слеп или если будет ругаться Выделить код Код:SET pathToFirefox=D:\FIREFOX\ timeout /T 5 /NOBREAK taskkill /F /IM FirefoxPortable.exe timeout /T 20 /NOBREAK START "РЕСТАРТ МОЗИЛЛЫ" %pathToFirefox%\FirefoxPortable.exe imacros://run/?m=твой_скрипт.js timeout /T 5 /NOBREAK exit code by: PRESIDENT | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 25-10-2015 14:51:15 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
пример функции для работы с вкладками (js) пример функции для работы с вкладками Выделить код Код://tabActs() - перейти на 1 вкладку //tabActs(3) - перейти на 3 вкладку //tabActs(3,1) - перейти на 3 вкладку и закрыть //tabActs(3,2) - перейти на 3 вкладку и закрыть все остальные var r=tabActs(2,1); //alert(r?'найдена':'не найдена'); function tabActs(a,b){ //a - номер вкладки по порядку неважно с какой страницы запущен скрипт //b - что нужно сделать с вкладкой 1-закрыть 2-перейти на неё и закрыть все остальные var a=a||1,b=b||0,c='SET !TIMEOUT_STEP 0\nTAB T='; while(iimPlayCode(c+'0')==1); if(iimPlayCode(c+a)==1){ switch(b){ case 1: iimPlayCode('TAB CLOSE'); break; case 2: iimPlayCode('TAB CLOSEALLOTHERS'); break; }; return true; }; return false; } code by: InfSub универсальная функция работы с вкладками (js) универсальная функция работы с вкладками Выделить код Код:var Tabs = { _browser: function () { var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); return wm.getMostRecentWindow("navigator:browser").gBrowser; }(), go: function (tabIndex) { this._browser.selectedTab = this._browser.tabContainer.childNodes[tabIndex - 1]; } }; пример использования: Выделить код Код:Tabs.go(1); // переход на первую вкладку iimPlayCode("WAIT SECONDS=3"); Tabs.go(2); iimPlayCode("WAIT SECONDS=3"); Tabs.go(3); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 03-04-2016 17:32:42 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 08-04-2016 22:00:04 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 05-06-2016 14:42:06 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 05-06-2016 15:25:27 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
как присвоить переменной рандомное (случайное) значение прокрутка страницы: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 17-07-2016 21:36:42 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Как iim превратить в js dvomaks пишет
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 19-11-2016 22:32:27 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
решение для смены личности в Tor решение для смены личности в Tor: Выделить код Код:var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator) .getMostRecentWindow("navigator:browser"); // Пример использования iimPlayCode('URL GOTO=https://whoer.net'); iimPlayCode('WAIT SECONDS=5'); wm.torbutton_new_circuit(); // Меняем цепочку соединения iimPlayCode('URL GOTO=https://whoer.net'); code by: Nagibaka | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 28-02-2017 10:20:32 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Примеры имитации клика мыши на Javascript Примеры имитации клика мыши на Javascript: Выделить код Код:// Кликнет по кнопке субмита window.document.querySelector("input[type=submit]").click(); // Кликнет по элементу с id="sbm" window.document.querySelector("#sbm").click(); // Кликнет по первому элементу с классом class="btn" window.document.querySelector(".btn").click(); // Кликнет по второму элементу с классом class="btn" window.document.querySelectorAll(".btn")[1].click(); code by: Nagibaka Альтернативный вариант, имитации клика мыши Альтернативный вариант, имитации клика мыши: Выделить код Код:// Кликнет по элементу с id="sbm" var targetNode = window.document.querySelector("#sbm"); if (targetNode) { triggerMouseEvent (targetNode, "mouseover"); triggerMouseEvent (targetNode, "mousedown"); triggerMouseEvent (targetNode, "mouseup"); triggerMouseEvent (targetNode, "click"); } else window.console.log ("*** Target node not found!"); function triggerMouseEvent (node, eventType) { var clickEvent = window.document.createEvent ('MouseEvents'); clickEvent.initEvent (eventType, true, true); node.dispatchEvent (clickEvent); } code by: karginaolga | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 21-05-2017 20:07:10 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Как отключить ADBLOCK с помощью iMacros+JS Как отключить ADBLOCK с помощью iMacros+JS: Выделить код Код:var Cc=Components.classes, Ci=Components.interfaces; var prf=Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); prf.setBoolPref("extensions.adblockplus.enabled",0); code by: PRESIDENT | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 06-06-2017 17:59:47 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Как правильно закрыть FireFox из скрипта Как правильно закрыть FireFox из скрипта: Выделить код Код:function a () { window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIWebNavigation) .QueryInterface(Components.interfaces.nsIDocShellTreeItem) .rootTreeItem .QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindow) .document.getElementById('menu_FileQuitItem').click() } a() code by: Hamzat | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 02-07-2017 12:27:58 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
свернуть/развернуть окно браузера с помощью скрипта свернуть/развернуть окно браузера с помощью скрипта Выделить код Код:var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIWebNavigation) .QueryInterface(Components.interfaces.nsIDocShellTreeItem) .rootTreeItem.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindow); mainWindow.minimize() //сворачиваем браузер mainWindow.onTitlebarMaxClick()//разворачиваем браузер code by: karginaolga | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 28-11-2017 10:28:43 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
обработчик для работы с DOM незагруженной страницы решение с переходом на активную новую вкладку: скрытый текст Выделить код Код:var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIWebNavigation) .QueryInterface(Components.interfaces.nsIDocShellTreeItem) .rootTreeItem .QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindow); //Заворачиваем открытие вкладки и переход на неё в метод getBrowserForTab(), чтобы определить цель события для обработчика var newTabBrowser = mainWindow.gBrowser.getBrowserForTab(mainWindow.gBrowser.selectedTab = mainWindow.gBrowser.addTab("https://forum.mozilla-russia.org/")); //Любая функция, которая будет вызываться обработчиком function ready(){ alert(newTabBrowser.contentDocument.body.innerHTML); newTabBrowser.removeEventListener("DOMContentLoaded", ready, true);//Удаляем обработчик }; //Назначаем обработчик для newTabBrowser, который сработает на этапе загрузки HTML newTabBrowser.addEventListener("DOMContentLoaded", ready, true); Таким образом можно парсить DOM не дожидаясь загрузки стилей, изображений и фреймов. Или напротив откладывать работу до полной загрузки содержимого страницы: скрытый текст | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 01-02-2018 02:18:47 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
скрытый текст Выделить код Код:var imJS = { get Ci() { return Components.interfaces; }, get Cu() { return Components.utils; }, setCookie: function setCookie(cookies) { this.Cu.import("resource://gre/modules/Services.jsm"); for (var i = 0; i < cookies.length; i++) { Services.cookies.add(cookies[i].host, cookies[i].path, cookies[i].name, cookies[i].value, cookies[i].isSecure, cookies[i].isHttpOnly, cookies[i].isSession, cookies[i].expiry); }; }, getCookie: function(domain) { this.Cu.import("resource://gre/modules/Services.jsm") var services = Services.cookies.getCookiesFromHost(domain); var listCookies = []; while (services.hasMoreElements()) { var cookie = services.getNext().QueryInterface(this.Ci.nsICookie2); listCookies.push(cookie); }; return listCookies; }, } // Использвоние imJS.getCookie('vk.com'); // Получаем куки и сохраняем в json файл или как удобно на диск // В следущем заходе берем куки с диска, переводите в массив JSON.parse() imJS.setCookie(cookies /* Передаем массив кукис */ ) code by: Hamzat | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 08-01-2019 03:49:14 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InfSub > 25-11-2020 02:20:06 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||