iMacros for FireFox - общие вопросы, обсуждение возможностей (Часть 2)




Правила оформления сообщений в данном топике:

http://i59.fastpic.ru/big/2015/0209/53/1a50e37cd460db106ba5ca4992038a53.jpg


  • Адрес сайта и страницы, на которой возникла проблема, размещается в тегах [spoiler][noindex]http://адрес_сайта/название_страницы[/noindex][/spoiler]

  • Для размещения кода, используйте тег "Code" внутри тега "Spoiler" - [spoiler][code]ваш код[/code][/spoiler]
    или выложите на сайт «Pastebin».
  • При размещении объемных материалов, используйте тег "Spoiler" - [spoiler]ваш текст[/spoiler]
    или выложите на сайт «Pastebin».
  • Размещать изображения в открытом виде. Для размещения скриншотов и других изображений, используйте тег "Spoiler" - [spoiler][img]http://ссылка_на_изображение[/img][/spoiler]
    .


«Можно ответить на любой вопрос, если вопрос задан правильно.»
Платон

«Не каждый вопрос заслуживает ответа.»
Сайрус

Есть желание обращаться к строкам кода макроса по двум и более переменным, чтобы не прописывать строки заново для каждого iimPlay.
Такой вариант работает, допустим, когда надо играть одинаковую "шапку" для двух разных iimPlay

скрытый текст

Выделить код

Код:

var main,sec;

// общие строки для двух iimPlay
    main = sec = "CODE:";
    main = sec += "FILTER TYPE=IMAGES STATUS=ON" + "\n";
    main = sec += "SET !EXTRACT_TEST_POPUP NO" + "\n";
    main = sec += "SET !SINGLESTEP YES" + "\n";
    main = sec += "TAB T=1" + "\n";

// Произвольно чередуем
    main += "PROMPT Играем<SP>по<SP>переменной<SP>'main'" + "\n";
    sec += "PROMPT Играем<SP>по<SP>переменной<SP>'sec'" + "\n";
    main += "PROMPT Играем<SP>по<SP>переменной<SP>'main'" + "\n";
    sec += "PROMPT Играем<SP>по<SP>переменной<SP>'sec'" + "\n";

for (;;){
        iimPlay(main);
        iimPlay(sec);
}


А вот такая запись уже не работает

скрытый текст

Выделить код

Код:

var main,sec;

    main = sec = "CODE:";
    main = sec += "SET !SINGLESTEP YES" + "\n";
    sec += "PROMPT Играем<SP>по<SP>переменной<SP>'sec'" + "\n";//Не игнорирует iimPlay(main)
    main = sec += "PROMPT Играем<SP>по<SP>переменной<SP>'main'" + "\n";

for (;;){
        iimPlay(main);
        iimPlay(sec);
}


Макрос не игнорирует строку с одной переменной "sec", стоит только после неё снова прописать присвоение двум переменным.

Есть варианты, как организовать подобную минификацию кода? :)

Squatter
Может почитаете основы is? Так для разнообразия...
Какой смысл в каждой строке присваивать новое значение переменной main, равное текущему значению переменной sec? Не проще ли в конце записать:  main=sec; т.к. результат будет все равно один и тот же.
От сюда и проблема, не понимая основ, вы придумываете велосипед, который не поедет.

скрытый текст

Выделить код

Код:

var a = "PROMPT Играем<SP>по<SP>переменной<SP>'main'" + "\n";
main += a;
sec += a;

InfSub пишет:

Какой смысл в каждой строке присваивать новое значение переменной main

Для наглядности, чтобы Вы подключив все свои знания нашли ошибку. ;)
Ведь необязательно через присвоение всё делать?

Задумка в упрощении записи. Допустим, чтобы играть общие строки по части составного имени переменной

скрытый текст

Выделить код

Код:

var a,b;

    a_b = "CODE:";
    a_b += "SET !SINGLESTEP YES" + "\n";
    a += "PROMPT играем<SP>'a'" + "\n";
    b += "PROMPT играем<SP>'b'" + "\n";
    b += "PROMPT играем<SP>'b'" + "\n";
    a_b += "PROMPT играем<SP>'a'<SP>или<SP>'b'" + "\n";

for (;;){
        iimPlay(a);
        iimPlay(b);
}


A Ваш вариант даже так не сработает
скрытый текст

Выделить код

Код:

var main;
var a = "WAIT SECONDS=3";
main += a;
iimPlayCode(main);// unknown command: UNDEFINEDWAIT, line 1 (Error code: -910)

или

Выделить код

Код:

var main;
var a = "CODE:WAIT SECONDS=3";
main += a;
iimPlay(main);//RuntimeError: Macro WAIT SECONDS=3.iim was not found (Error code: -930)

Squatter пишет:

Для наглядности, чтобы Вы подключив все свои знания нашли ошибку.

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

Squatter пишет:

A Ваш вариант даже так не сработает

Описанный мной пример, будет работать, в описанном вами в первом сообщении коде, но не так, как вы его пытаетесь применить.
Во втором сообщении, вы пытаетесь добавить к переменной не имеющей значение, стоку, результат на лицо.
Обьявленная переменная без значения, всегда равна undefined

Squatter
Дальнейшее обсуждение данного вопроса, будет считаться флудом, пункт 1.5, правил раздела iMacros:

1.5. ... Для ответов на вопросы, из серии: как сложить a+b в js и аналогичных - есть Google. Подобные сообщения могут быть расценены как флуд.

Учите основы is, все элементарно.

InfSub пишет:

Описанный мной пример, будет работать, в описанном вами в первом сообщении коде

Теперь понятно. :)

Рабочий вариант:

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

скрытый текст

Выделить код

Код:

var main = "CODE:";
var sec = "CODE:";

// Присваиваем 'a' общую для двух iimPlay шапку
    var a = "VERSION BUILD=12345\n" +
    "SET !ERRORIGNORE NO\n" +
    "SET !SINGLESTEP YES\n" +
    "TAB T=1\n";
    main += a;
    sec += a;

// Играем различный для двух iimPlay сценарий
    main += "PROMPT Играем<SP>main" + "\n";
    sec += "PROMPT Играем<SP>sec" + "\n";

// Снова присваиваем 'a' общие для двух iimPlay строки если нужно
    a = "URL GOTO=https://forum.mozilla-russia.org/viewtopic.php?pid=736085#p736085\n" +
    "WAIT SECONDS=1\n" +
    "SET !ERRORIGNORE YES\n";
    main += a;
    sec += a;
    sec += "PROMPT Работает" + "\n";

for (;;){
    iimPlay(main);
    iimPlay(sec);
}


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

InfSub Спасибо!

Предыдущие сообщения можно удалить.

Squatter пишет:

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

Читайте про js-функцию replace()
Впрочем, ее частично можно заменить iMacros-функцией iimSet(), во всяком случае для части приведенного вами кода.
При этом - код будет более органичен и не будет содержать ненужных вставок, и разрывов, применяемых вами сейчас.

Доброго времени суток.

Подскажите,кто в теме,как с Википедии и ему подобных сайтов копировать текст.Вот такой код копирует всё HTM ,а вот просто текст ни в какую.

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=DIV ATTR=ID:bodyContent EXTRACT=HTM


любой код публикуется в тегах code внутри спойлера

InfSub

anton3500, EXTRACT=TXT копирует текст.

Здравствуйте! Вопрос по теме: скажите, а что это Русские буквы не поддерживаются что ли в списке? То есть если аймакрос берет по списку логины из файла например logins.csv и вставляет в нужое поле, то при наличии Русских букв выдаёт в логинах ошибку. А если символы англоязычные и даже есть всякие знаки типа таких @ _ - ! то работает. А с Русскими буквами ошибку выдаёт. А если Русские буквы убрать и все работает. В чем причина? Это зависит от версии аймакроса? Или нет? У меня не самая последняя версия, но и не старая: 8.6.0.1
Или тут дело не в аймакросе вообще, а в чем-то ином?

genstrijen
какова кодировка файла?

InfSub та просто взял блокнот, написал туда логинов (сам придумал), какие-то на Русском языке, какие-то на английском. Вот на различных форумах можно регистрироваться с ником состоящим из латинских букв и так же Русскими буквами. Так я там логинов создал и таких и таких. А какая там кодировка... хз, не в курсе дела. Обычная) Какая есть, такая есть)

Прошу прощения.Но ни одна команда для копирования текста,что удалось найти в поиске,не копирует текст в Википедии и ему подобных.


скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=DIV ATTR=ID:bodyContent EXTRACT=TXT
TAG POS=2 TYPE=TD ATTR=TXT:* EXTRACT=TXT
TAG POS=1 TYPE=DIV ATTR=ID:posts* EXTRACT=TXTALL
TAG POS=1 TYPE=* ATTR=* EXTRACT=TXT
TAG POS=1 TYPE=ID ATTR=ALIGN:center&&TXT:*.* EXTRACT=TXT
TAG POS=1 TYPE=H1 ATTR=CLASS:mctc_name_tx&&HREF:* EXTRACT=TXT
TAG POS=1 TYPE=DIV ATTR=TXT:* EXTRACT=text
TAG POS=1 TYPE=P ATTR=TXT:posts* EXTRACT=text
TAG POS=1 TYPE=DIV ATTR=CLASS:posts:* EXTRACT=TXT


Заголовок статьи копируется без проблем,а сама статья нет.

genstrijen
Кодировка - должна быть UTF8, по умолчанию - "Блокнот" сохраняет в кодировке ANSI, в этом и проблема
Для "Блокнота": выберите "Сохранить как..." и внизу окна сохранения смените кодировку с ANSI на UFT-8
Как рекомендация: используйте любой продвинутый редактор, AkelPad, Notepad++ и т.д. вместо "Блокнота"

InfSub, понятно. Спасибо! :)

anton3500
данная строка, все нормально экстрактит со страницы:

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=DIV ATTR=ID:bodyContent EXTRACT=TXT



13-05-2017 21:27:51
скрытый текст

Выделить код

Код:

SET !EXTRACT_TEST_POPUP NO
TAG POS=1 TYPE=DIV ATTR=ID:bodyContent EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=wiki.txt

Создается абсолютно пустой тхт документ.Только цыферки вписались 1,2,3,4.Я четырежды прогнал этот макрос.Что и где я делаю не так.Мозилла и старая и новая.Винда семерка и хп.Комп и бук.Как мне взять оттуда именно текст? И если у Вас скопировалось без проблем,ткните носом меня в ошибку.

anton3500 пишет:

ткните носом меня в ошибку

первая и основная ошибка - не читаем правила форума:

1.  Не рекомендуется:
1.2
  Задавать вопрос без указания:
1.2.2  Браузера (название, версия).
1.2.3  Версии iMacros'a.
1.2.4  Адреса сайта и страницы, на которой возникла проблема. Адрес размещается в тегах [spoiler][noindex]http://адрес_сайта/название_страницы[/noindex][/spoiler]

Мозилла-53.0.2 (64-бит)
VERSION BUILD=9030808

Википедия-любая страница.

Пытаюсь скопировать из Википедии заголовок статьи и саму статью.В тхт формате.Заголовок копируется без проблем,а сама статья нет.Копируется только вся страница в нтм формате,если указать нтм.А в тхт никак.Что бы я там не прописывал.Хотя подозреваю,что дело не в кодах,а во мне.Природная  глупость,как то не позволяет, найти правильные данные.

скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES
SET !EXTRACT_TEST_POPUP NO
URL GOTO=https://ru.wikipedia.org
TAG POS=1 TYPE=A ATTR=TXT:Случайная<SP>статья
TAG POS=1 TYPE=H1 ATTR=ID:firstHeading EXTRACT=TXT
SET !VAR1 {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=1 TYPE=DIV ATTR=ID:bodyContent EXTRACT=HTM
SET !VAR2 {{!EXTRACT}}


если прописать вот так,то копирования не происходит.

TAG POS=1 TYPE=DIV ATTR=ID:bodyContent EXTRACT=TXT


А нужно взять именно тхт.

anton3500 пишет:

VERSION BUILD=9030808

https://forum.mozilla-russia.org/viewtopic.php?id=71920

13-05-2017 22:47:17
anton3500

iMacros ver. 8.9.7 - полет нормальный

Выделить код

Код:

SET !EXTRACT_TEST_POPUP NO
URL GOTO=https://ru.wikipedia.org
TAG POS=1 TYPE=A ATTR=TXT:Случайная<SP>статья
TAG POS=1 TYPE=DIV ATTR=ID:bodyContent EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=wiki.txt

InfSub - Благодарю.Четвертый день мучался.а ларчик просто открывался, оказывается.Всех Вам благ и терпения на Нас( специалистов)- побольше.С уважением, Антон.

Подскажите, как можно сделать чтоб аймакрос вставлял в поле "логин" ники состоящие из двух слов, например: Иван Василевич, Василий Иванович, Василий Алибабаевич и т.д.? А то он первое слово берет, а второе игнорирует. Понятно что это из-за пробела, но тем не менее такой ник. И пробел из него никуда не убрать.
Как сделать чтоб аймаррос брал из списка (файла logins.csv) оба слова?

genstrijen
Записать их в двойных кавычках

InfSub спасибо!:)

genstrijen

csv
можно без кавычек, если столбец один

Выделить код

Код:

Александр Василевич
Василий Иванович
Василий Алибабаевич 

в кавычках если столбцов несколько

Выделить код

Код:

"Александр Василевич","26 лет"
"Василий Иванович","40 лет"
"Василий Алибабаевич","59 лет"


iim

Выделить код

Код:

tag pos=....... content="{{!col1}}"

Люди добрые, есть очень интересная проблемка, подскажите пожалуйста как мне реализовать скрипт, который бы реагировал на событие. Если быть точнее, то если в тексте на сайте появляется слово которое есть в моем текстовом файле, чтобы макрос выполнял определенный ряд действий, а если нет, то ждал время и заново начинал искать. Как мне подключить файл в это дело и текст с него. А все остальное, как я понимаю нужно реализовывать через if и then. Заранее благодарен. Буду рад любой помощи.

LeoKranis
в js - нет then, есть if... else
а в чем, собственно, сложность?
1. считали файл
2. запустили цикл (предположительно бесконечный)
2.1 проверили наличие необходимых слов в тексте на странице (вариантов тут куча, от перебора, до регулярных выражений и динамических условий)
2.2.1 если условие выполнено (слово найдено) - действия
2.2.2 если условие не выполнено (слово не найдено) - запуск таймера

InfSub пишет:

можно без кавычек, если столбец один

У меня как раз один столбец, поэтому без ковычек. А вот часть ява-скрипта, там кавычки поставил, как вы и показали, но увы не тут-то было. Не дало результата это. Наверное надо как-то иначе? Ведь вы показали для .iim а у меня .js
Вот часть кода с кавычками (не работает как должно)

скрытый текст

Выделить код

Код:

   iimPlayCode('SET !DATASOURCE logins.csv\nSET !DATASOURCE_LINE '+a+'\nSET !EXTRACT "{{!COL1}}"'); if(iimGetExtract()=='')break;
   iimPlayCode('EVENTS TYPE=KEYPRESS SELECTOR="#guest_form>INPUT" CHARS='+iimGetExtract());


что тут подправить?

genstrijen
Да вроде бы - все верно
Какая версия iMacros?
Покажите результат этого кода:

скрытый текст

Выделить код

Код:

 iimPlayCode('SET !DATASOURCE logins.csv\nSET !DATASOURCE_LINE '+a+'\nPROMPT "{{!COL1}}"');

InfSub результат такой: в браузере открывается новое окошко с именем-отчеством (вроде всё как надо).

скрытый текст
http://funkyimg.com/i/2tdFm.png

Но вот в поле ввода логина всё равно почему-то только имя вставляется, а отчество игнорится.
скрытый текст
http://funkyimg.com/i/2tdHh.png

версия аймакроса 8.6.0.1

genstrijen пишет:

в поле ввода логина всё равно почему-то только имя вставляется

Да, во второй строке, тоже кавычки должны быть
Вторую строку, я как-то не посмотрел :sick:

скрытый текст

Выделить код

Код:

   iimPlayCode('SET !DATASOURCE logins.csv\nSET !DATASOURCE_LINE '+a+'\nSET !EXTRACT "{{!COL1}}"'); if(iimGetExtract()=='')break;
   iimPlayCode('EVENTS TYPE=KEYPRESS SELECTOR="#guest_form>INPUT" CHARS="'+iimGetExtract()+'"');


18-05-2017 10:49:18
Любая строка, содержащая пробелы, в iMacros, должна быть обрамлена двойными кавычками, не важно прописана она руками в код или приходит из iim- или js- переменной

InfSub теперь всё работает как надо. Благодарю! :)

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

скрытый текст

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:* EXTRACT=TXT\nSET !EXTRACT {{!EXTRACT}}\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=text.txt');


Если вместо TYPE и TXT поставить звёздочки то вообще ничего не сохранаяется.

genstrijen
TYPE не может быть со звездочкой, указание тега - обязательно

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=BODY ATTR=* EXTRACT=TXT

или

Выделить код

Код:

TAG POS=1 TYPE=PRE ATTR=* EXTRACT=TXT


18-05-2017 18:45:15
На счет pre, не уверен, если память не изменяет, должно работать аналогично тега body, в таком контексте, но возможно ошибаюсь, надо пробовать

InfSub
Подскажите пожалуйста!

Сохраняю в файл с переносом строки

Выделить код

Код:

/*
запись в файл
*/

var appendToFile = function (fileName, text) {
    var fileDescriptor = imns.FIO.openNode(fileName);
    imns.FIO.appendTextFile(fileDescriptor, text);
}
 
var save = function () {
    appendToFile(file_recapa,'\r\n'+id_recaptcha);
}
 
save();


Далее другим скриптом беру нижнюю строку и удаляю ее
скрытый текст

Выделить код

Код:

/*  
ключ с текста (с нижней строки) и удаление нижней строки в файле  
*/
var loadFile = function (fileName) {
    var fileDescriptor = imns.FIO.openNode(fileName);
    var text = imns.FIO.readTextFile(fileDescriptor);
    return {
        text: text,
        strings: text.split('\n') 
    };
}

var saveToFile = function (fileName, text) {
    var fileDescriptor = imns.FIO.openNode(fileName);
    imns.FIO.writeTextFile(fileDescriptor, text);
}

var strings = loadFile(file_recapa).strings;
var delet = (strings.length-1);
var key_recapa = strings[strings.length-1];
strings.splice(delet, 1); 
saveToFile(file_recapa, strings.join('\n'));
alert(key_recapa)


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

Выделить код

Код:

while(file = inportData('file:///'+file_recapa),file=='') {//п»ї
iimPlayCode('WAIT SECONDS=2')    
}


Этот символ "п»ї" ( я так понимаю это перенос строки) видит макрос, хотя в .тхт его нет. Как в проверке на наличие текста(см.выше)его добавить?
Перенос строки сделал перед записью,а не после,иначе после каждого удаления перенос добавляется.

dim222
Смените кодировку файла (datasource), с utf8 без bom на utf8, эти символы - должны пропасть

кодировка стоит utf8, не помогает. Такую ерунду видит только на самой первой строке [0].Остальные строки делаю пустыми, не видит. Фигня какая-та,не могу победить.

dim222
удалите файл и при создании нового сразу укажите кодировку UTF-8
проверить корректность кодировки - можно вписав русский текст в файл и посмотрев, как он выводится скриптом после прочтения (корректно или нет)

InfSub
Спасибо!Все решено!

Господа! Подскажите,как целесообразней и правильнее заходить под разными профилями? Т.е Запустил скрипт,сделал что надо,далее
- закрыл браузер
- батником сменил coocki , pref.js
- запустил снова скрипт
И так несколько раз с разными (coocki , pref.js). Можно конечно создать несколько .bat файлов , вести записи в .тхт  и все такое, но может быть есть более оригинальное решение?

-p name -noremote

EverythingForYou пишет:

-p name -noremote

Ты не понял моего вопроса.
Я имею ввиду запуск (цикличность) одного и того же браузера с  заранее подготовленными куками и pref.js .

dim222
что мешает запустить через батник?
правильно вам EverythingForYou написал

скрытый текст

Выделить код

Код:

START C:\FirefoxPortable\App\Firefox\firefox.exe -no-remote -profile "C:\FirefoxPortable\App\DefaultData\profiles\bot1"


и так далее
скрытый текст

Выделить код

Код:

START C:\FirefoxPortable\App\Firefox\firefox.exe -no-remote -profile "C:\FirefoxPortable\App\DefaultData\profiles\bot2"

karginaolga
Спасибо.как запустить профиль я знаю,но как их зациклить в скрипте.
задача такая: запустил скрипт , далее .bat1.
опять запустил этот же скрипт,далее .bat2.
опять запустил этот же скрипт,далее .bat3. и т.д.
Как с помощью перезаписи в .тхт я знаю. но может быть есть более оригинальное решение?

dim222
гугл -> cmd циклы

InfSub
Спасибо буду искать.
Просто думал может это как-то с помощью JSON можно реализовать.

dim222
при использовании, вместо Batch (bat/cmd) аналога Java Script под Windows под названием JScript, думаю можно и json использовать, дело лишь в вашей фантазии, умении гуглить и прямоте рук
вот только учтите, что в нем реализована, поддержка ECMAScript только первых версий (в отличии от js - ECMAScript 6) и соответственно, большинство операций и функций, к которым вы привыкли в js, просто не будут работать

InfSub
Спасибо за информацию!

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

dim222
а чем задержка в самом скрипте не устраивает?

22-05-2017 16:30:34
ну или такой вариант: Запуск макроса в ранее открытом браузере

InfSub
задержка в скрипте не помогает. в ветке в которой вы указали данный код работает только без указания профиля.Можно ли в батнике прописать сначала открытие FF,задержка,запуск скрипта?

да, можно. есть два варианта, в зависимости от того какая ОС:

1. ping -n секунды 127.0.0.1 > NUL

2. timeout секунды > NUL

подробнее в интернетах : )

dim222
удалено, избыточное цитирование

Так можно же менять и без закрытии браузера, зачем такие сложности.

InfSub

Здравствуйте! Есть скрипт(запуск скрипта по времени), как только время совпадает, скрипт запускается, но есть нюанс, после совпадения скрипт не останавливается, то-есть функция break; не работает. Исправьте пожалуйста. Спасибо.

скрытый текст

Выделить код

Код:

while(true){
    var t = new Date();
    var h = t.getHours();
    var m = t.getMinutes();
    var res = [h,m];
    
    var arr = [1];    
    arr[1] = ['10,32','22,15'];

    for (var i=0;i<arr.length;i++) {
        for (var j=0;j<arr[i].length;j++) {
            if (res == arr[i][j]){
                 iimPlayCode("URL GOTO=imacros://run/?m=1.js");
               // alert("hello,word!");
               break;                           
            };            
        };       
    };
    iimPlay('CODE:WAIT SECONDS=2');   
};

taniks
https://forum.mozilla-russia.org/viewtopic.php?id=71951

удалено, избыточное цитирование, п.п. 2.9
InfSub
Я извиняюсь, но либо вы меня не поняли, либо я вас, я в языке не силён, как реализовать правильно, данный скрипт.


InfSub

taniks пишет:

либо я вас

что именно вам не понятно в следующих цитатах:
Мини FAQ по iMacros for Firefox - Как запустить один скрипт из другого:

InfSub пишет:

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



https://forum.mozilla-russia.org/viewto … 15#p737115

InfSub пишет:

Codepg пишет:

корректно работает исключительно вариант iim из iim?

корректно работает вызов iim, но не только из iim, но и из js, собственно для чего js и используется



https://forum.mozilla-russia.org/viewto … 19#p718719

InfSub пишет:

Romstar08
Объедините все в 1 js файл и не занимайтесь ерундой, вида: запуск js из js



https://forum.mozilla-russia.org/viewto … 00#p721700

InfSub пишет:

bukinzlyukin пишет:

В чем может быть проблема?

в том, что js из js, описанным вами способом - корректно не работает
работает только последовательно: из 1 - 2, из 2 - 3 и т.д. (опять же, не всегда)


добавлена цитата из FAQ и ссылки на посты

InfSub пишет:

Romstar08
Объедините все в 1 js файл и не занимайтесь ерундой, вида: запуск js из js

Теперь понятно:) Спасибо. А можно пример ?

taniks
пример чего? вы не можете запихнуть код из файла 1.js в ваш код вместо строки:

скрытый текст

Выделить код

Код:

iimPlayCode("URL GOTO=imacros://run/?m=1.js");

удалено, избыточное цитирование, п.п. 2.9, как правильно отвечать в теме - описано тут
Пробовал, не работает, вы мне пожалуйста объясните, почему функция break; в моём примере, не останавливает сценарий ?


InfSub

taniks пишет:

почему функция break; в моём примере, не останавливает сценарий ?

я вам уже ответил почему, здесь
вы что сказали?:

taniks пишет:

Теперь понятно

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

taniks пишет:

Пробовал, не работает

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

Как то злобно вы реагируете на всё:) Суть проблемы в том, что цикличность, не смотря на команду break,  цикличность продолжает работать, а мне  надо, чтобы при нахождении определённого слова, всё остановилось(скрипт).

скрытый текст

Выделить код

Код:

while(true){ 
    var t = new Date();
    var h = t.getHours();
    var m = t.getMinutes();
    var res = [h,m];
    
    var arr = [1];    
    arr[1] = ['15,23','22,15'];
  

    for (var i=0;i<arr.length;i++) {
        for (var j=0;j<arr[i].length;j++) {
            if (res == arr[i][j]){
                
var macro1;
macro1 =  "CODE:";
macro1 +=  "SET !ERRORIGNORE YES" + "\n";
macro1 +=  "SET !TIMEOUT_PAGE 60" + "\n"; 
iimPlay(macro1) 
var text_12 ='1', text_31 ='4', text_32 ='5';
for (;;){                                                     
if(iimPlayCode('SEARCH SOURCE=TXT:"'+text_32+'"')>0);
if(iimPlayCode('SET !TIMEOUT_STEP 0\nSEARCH SOURCE=TXT:"'+text_12+'"')>0){break;}
if(iimPlayCode('SEARCH SOURCE=TXT:"'+text_31+'"')>0);
else 
iimPlayCode('SET !TIMEOUT_PAGE 60\nONDIALOG POS=1 BUTTON=OK CONTENT=\nREFRESH');

 {
}}
           };
            
        };
       
    };
    iimPlay('CODE:WAIT SECONDS=0');
    
};

taniks пишет:

Как то злобно вы реагируете на всё

потому что надоело в тысячный раз цитировать правила форума и темы iMacros, задавать наводящие вопросы, чтобы вопрошающий соизволил предоставить информацию по вопросу, достаточную для ответа на его вопрос, а не из серии: "помогите, ни чего не работает"


следующий код, совершенно бесполезен и не на что не влияет в таком варианте использования:
скрытый текст

Выделить код

Код:

var macro1;
macro1 =  "CODE:";
macro1 +=  "SET !ERRORIGNORE YES" + "\n";
macro1 +=  "SET !TIMEOUT_PAGE 60" + "\n"; 
iimPlay(macro1);


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

taniks пишет:

не смотря на команду break

какую? в первом вашем посте - присутствовал break которого в данном коде нет, но есть другой... и о каком вы говорите?

Hamzat пишет:

dim222
Так можно же менять и без закрытии браузера, зачем такие сложности.

Я не знаю как это сделать.Я думал загрузка  необходимых параметров происходит при открытии браузера.

InfSub пишет:

какую? в первом вашем посте - присутствовал break которого в данном коде нет, но есть другой... и о каком вы говорите?

Вы поймите:), мне надо чтобы скрипт закончил свою работу, когда найдёт слово

скрытый текст

Выделить код

Код:

if(iimPlayCode('SET !TIMEOUT_STEP 0\nSEARCH SOURCE=TXT:"'+text_12+'"')>0){break;}


это второй вариант.

taniks
какой цикл должен быть прерван? while?

dim222 пишет:

InfSub
задержка в скрипте не помогает. в ветке в которой вы указали данный код работает только без указания профиля.Можно ли в батнике прописать сначала открытие FF,задержка,запуск скрипта?

Решил (не без помощи) с помощью .html (сначала запуститься мозилла с открытой вкладкой  и через 5 сек запустится скрипт и все фильтры будут работать)

dim222
так вроде в ссылке на тему, что я давал выше, приведено аналогичное решение, только там вопрос стоял - как запустить уже в открытой мозилле скрипт iMacros'а из cmd
но суть - не меняет - запустить батником мозиллу, подождать передать ей параметром скрипт

24-05-2017 19:23:58
taniks
если в двух словах, то break прерывает текущий цикл, а не тот что выше
для того, чтобы прервать цикл расположенный выше, перед циклом ставится метка, которая передается break и показывает интерпретатору, из какого цикла надо выйти

ссылка на FAQ по JS: Метки для break/continue

InfSub пишет:

taniks
какой цикл должен быть прерван? while?

Да, while, исправьте пожалуйста мой скрипт, как надо, просто в этом я новичок.

InfSub пишет:

но суть - не меняет - запустить батником мозиллу, подождать передать ей параметром скрипт

Возможно моя кривота рук. Но у меня так и не получилось запустить данным методом (по ссылке)  скрипт с задержкой. Там кстати указано про костыли с профилем.

Можно ли iim или js нажимать на кнопку пауза в имакросе?
Короче я с одного js вызываю другой js если при этом нажимаю кнопку паузу то всё отлично работает,а если не ставлю на паузу то скрипт дрожит как то стрёмно так работать.
А разделил один скрипт js на два js потому что если браузер свернуть,то скрипт не находил элементы на странице,а когда разделил один скрипт на две части то работает в свёрнутом и развёрнутом браузере.

Gergi

http://wiki.imacros.net/PAUSE

скрытый текст

Выделить код

Код:

iimPlay("CODE:PAUSE");

Доброго времени суток.
Есть такой код для поиска фрейма (взят из соседней темы про распознавание капчи):

скрытый текст

Выделить код

Код:

for(w=1; w<=30; w++){ 
if(iimPlayCode('SET !REPLAYSPEED FAST\nSET !TIMEOUT_STEP 0\nFRAME F='+w+'\nEVENT TYPE=CLICK SELECTOR="HTML>BODY>P" BUTTON=0')>0){
iimPlayCode('FRAME F='+w+'\nEVENTS TYPE=KEYPRESS SELECTOR="HTML>BODY" CHARS="'+comment+'"');
iimPlayCode('FRAME F=0\nEVENT TYPE=CLICK SELECTOR="#thread-reply-form>P>BUTTON" BUTTON=0');
break;}}


Т.к. форма для написания сообщения находится во фрейме. Так вот, iMacros находит номер фрейма только если окно FF активно. Как только я сворачиваю или переключаюсь на другое окно, iMacros просто работает вхолостую. Можно проблему как-н решить? Потому что это не очень удобно.

да, можно. нужно избавиться от EVENT команд.

Всем привет!:rock:
Делаю экстракт,и выходит много лишней чепухи
Как можно всё лишнее обрезать и оставить только эти цифры? 1255767817853857

скрытый текст

Выделить код

Код:

 <i style="background-image: url(&quot;https://scontent-waw1-1.xx.fbcdn.net/v/t1.0-0/p206x206/18882232_1255767817853857_156573834727522887_n.jpg?oh=6bb049440d5f7d8f20027a456e9504cf&amp;oe=59A6A373&quot;); outline: 1px solid blue;" class="uiMediaThumbImg"></i>

Gergi
/_(\d+)_/

InfSub
Спасибо,уже ближе к делу,но экстрактится теперь так _1255767817853857_,1255767817853857

Gergi пишет:

но экстрактится теперь так

читайте FAQ по функции match() - да и на форуме, я многократно писал, как получить правильный результат от данной функции

InfSub
да вроде как бы сделал правильно

скрытый текст

Выделить код

Код:

r=iimGetExtract().match(/_(\d+)_/);

Gergi
я не спорю, с тем, как вы применили регулярное выражение, применили правильно, но вы не понимаете, что возвращает вам функция и что с этим делать, еще раз повторяю - либо поиск по форуму, либо FAQ по функции - дадут ответ на ваш вопрос

Gergi

примерно так можно если ищете несколько таких строк на странице

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=* ATTR=* EXTRACT=HTM
SET digits EVAL("var str = '{{!EXTRACT}}'.match(/_\d+_/g); str.join().replace(/_/g, '').replace(/,/g, '\\r\\n');")
SET !EXTRACT NULL
PROMPT {{digits}}
ADD !EXTRACT {{digits}}
SAVEAS TYPE=EXTRACT FOLDER=iMacros FILE=Name.txt"


Если количество цифровых знаков после '_' всегда одинаково, то выборку можно вести точнее по этому самому количеству, т.е. вместо  /_\d+_/ пишем /_\d{16}_/

Получим только _1255767817853857_

а не  _1255767817853857_ и _156573834727522887_

Знатоки!!!  при получении вчерашней даты использую код

скрытый текст

Выделить код

Код:

var d = new Date();
d.setDate(d.getDate()-1);
alert(d.getDate()+'.'+d.getMonth()+'.'+d.getFullYear())


Проблема в том , что месяц показывает не правильно (31.4.2017). Подскажите,как исправить.

dim222

скрытый текст

Выделить код

Код:

var MyDate = new Date();
var MyDateString;

MyDate.setDate(MyDate.getDate() - 1);

MyDateString = ('0' + MyDate.getDate()).slice(-2) + '.'
             + ('0' + (MyDate.getMonth()+1)).slice(-2) + '.'
             + MyDate.getFullYear();
             
             alert(MyDateString);


подробно расписано тут
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


В Вашем варианте не только месяц, но и число без нуля будет показывать.

Счёт месяцев идёт с нуля
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


поэтому getMonth()+1

Squatter пишет:

Счёт месяцев идёт с нуля

Точно.........С головы вылетело. Спасибо!!!

Всем привет, очень нужна ваша помощь. Имею следующий скрипт:

скрытый текст

Выделить код

Код:

VERSION BUILD=9030808 RECORDER=FX
SET !ERRORIGNORE YES
FILTER TYPE=IMAGES STATUS=ON
URL GOTO= МОЯ ССЫЛКА
WAIT SECONDS=1
TAG POS=1 TYPE=DIV ATTR=ID:subText >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ПРОБЛЕМНОЕ МЕСТО!!!!!!!!!!!!!!!!
TAB T=2
WAIT SECONDS=2
TAG POS=2 TYPE=BUTTON ATTR=TXT:
WAIT SECONDS=1
TAG POS=1 TYPE=DIV ATTR=TXT: 
WAIT SECONDS=3
TAG POS=1 TYPE=BUTTON ATTR=TXT:
WAIT SECONDS=2
CLICK X=94 Y=494
WAIT SECONDS=2
CLICK X=102 Y=498
WAIT SECONDS=2
TAG POS=1 TYPE=BUTTON ATTR=TXT:
WAIT SECONDS=3
EVENT TYPE=CLICK SELECTOR="#body-container>DIV:nth-of-type(5)>DIV>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>BUTTON:nth-of-type(2)" BUTTON=0
WAIT SECONDS=2
TAB T=1
WAIT SECONDS=3.5
TAG POS=2 TYPE=DIV ATTR=TXT:
WAIT SECONDS=2
TAG POS=1 TYPE=DIV ATTR=TXT:
WAIT SECONDS=1
TAB CLOSEALLOTHERS


Проблема в том, что с 5% вероятностью этой кнопки на странице может и не оказаться.
скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=DIV ATTR=ID:subText


В чем вопрос, хочу сделать, чтобы скрипт Imacros обновлял страницу (REFRESH), если нет этой кнопки. Итак до бесконечности пока не появиться кнопка.
Нагуглил, что нужно подключать js файлы
скрытый текст

Выделить код

Код:

var macro;
iimPlayCode('SET !ERRORIGNORE YES');
macro ="CODE:";
macro +="TAG POS=1 TYPE=DIV ATTR=ID:subText";
var ret=null;
ret=iimPlay(macro);
if(ret>0)
{
iimPlayCode('SET !DATASOURCE_LINE 7'); >>>>>>>>>> Хочу начать с седьмой строки, если условие верно
iimPlayCode('URL GOTO=imacros://run/?m=Sub2-2.iim');
}
else
{
iimPlayCode('REFRESH')}


Имею следующие проблемы:
1)if(ret>0), т.е условие верно и кнопка есть мне нужно продолжить мой скрипт с 7 строки, но js запускает его заново :mad:
2)Цикл не выполняется бесконечно, а только 1 раз.

P.S Где то видел, что проверять элемент на странице можно командой EVAL без подключение JS, но уже не помню где. Тогда 1 проблема отпадет.

if(ret>0) наоборот if(ret<0)

скрытый текст

Выделить код

Код:

for (;;){
        var err = iimPlay("CODE:URL GOTO= МОЯ ССЫЛКА\nPOS=1 TYPE=DIV ATTR=ID:subText >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ПРОБЛЕМНОЕ МЕСТО!!!!!!!!!!!!!!!!");
        if (err<0){continue;}
        iimPlay("CODE:TAB T=2\nWAIT SECONDS=2\nTAG POS=2 TYPE=BUTTON ATTR=TXT:\nWAIT SECONDS=1");
}


Играете вначале проблемный кусок кода. Если кнопки нет, цикл переходит на новую итерацию и заново проигрывает переход на страницу(вместо рефреша) и проблемное место до тех пор пока не найдёт кнопку. Если находит, то играет следующий iimPlay("ваша 7-я строка");

Спасибо большое! :beer:

У меня еще тогда такой вопрос, дело в том, что изредка меня интернет страница выкидывает на поле ввода логина и пароля. Это происходит после URL GOTO= МОЯ ССЫЛКА.  В принципе не вопрос, ввод логина я сделал.

скрытый текст

Выделить код

Код:

EVENT TYPE=CLICK SELECTOR="#formLogin>DIV>INPUT" BUTTON=0
WAIT SECONDS=2
EVENTS TYPE=KEYPRESS SELECTOR="#formLogin>DIV>INPUT" CHARS="МОЙ ЛОГИН"
WAIT SECONDS=2
EVENT TYPE=CLICK SELECTOR="#formLogin>DIV:nth-of-type(2)>INPUT" BUTTON=0
SET !ENCRYPTION NO
WAIT SECONDS=2
EVENTS TYPE=KEYPRESS SELECTOR="#formLogin>DIV:nth-of-type(2)>INPUT" CHARS="МОЙ ПАРОЛЬ"
WAIT SECONDS=2
TAG POS=1 TYPE=BUTTON FORM=ID:formLogin ATTR=TXT:Login


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


InfSub

Squatter
удалено, избыточное цитирование

скрытый текст

Выделить код

Код:

EVENT TYPE=CLICK SELECTOR="#body-container>DIV:nth-of-type(5)>DIV>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>BUTTON:nth-of-type(2)" BUTTON=0


Почему я использую преобразованную команду? Дело в том, что там кнопка меняет свои TAG POS = 1, 2 и так до 100500

скрытый текст

Выделить код

Код:

TAG POS=7 (тут хоть 100500 может быть) TYPE=BUTTON ATTR=TXT:Да


InfSub

FastSpeed пишет:

Это происходит после URL GOTO= МОЯ ССЫЛКА...Так, слабо себе представляю как сделать сначала проверку в JS

Аналогично, как и с кнопкой можно, через условие. Если не находит какой-нибудь элемент (которого точно нет на странице входа) после перехода «URL GOTO= МОЯ ССЫЛКА», то играет ваш код авторизации.


FastSpeed пишет:

В JS тогда не работает эта команда:

Экранировать кавычки нужно

скрытый текст

Выделить код

Код:

EVENT TYPE=CLICK SELECTOR=\"#body-container>DIV:nth-of-type(5)>DIV>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>BUTTON:nth-of-type(2)\" BUTTON=0


или оборачивать весь код одинарными кавычками, а в EVENT оставлять как есть двойные.

Спасибо еще раз ;) Осталась последняя проблема с этим JS. Если я использую js, то теперь нельзя остановить скрипт (STOP), браузер начинать лагать и скрипт не останавливается. В принципе не особо проблема, но я использую сразу 10 iim файлов. Они друг друга меняют в конце, содержимое их одинакокое, за исключением почтового ящика. Запустить js из js из-за этого бага теперь нельзя. Однако мне нужно, что скрипт менял почтовые ящики по клику:

скрытый текст

Выделить код

Код:

for (;;){
        var err = iimPlay("CODE:URL GOTO=/* моя ссылка */\nTAG POS=1 TYPE=DIV ATTR=ID:subText");
        if (err<0){continue;}
        // мой скрипт
        iimPlay("CODE:TAG POS=1 TYPE=DIV ATTR=TXT:fastspeed@yandex.com);
        // дальше мой скрипт
        // вернуться к циклу на проверку кнопки 
        TAG POS=1 TYPE=DIV ATTR=ID:subText
        // опять мой скрипт, но уже почта другая
        iimPlay("CODE:TAG POS=1 TYPE=DIV ATTR=TXT:fastspeed1@yandex.com);  
        // снова вернуться к циклу на проверку кнопки 
        TAG POS=1 TYPE=DIV ATTR=ID:subText
        // Итак 10 раз, и мы снова вернемся от 10 почте к 1
}


п.п. 2.4 Злоупотребление написанием сообщений ЗАГЛАВНЫМИ буквами - для комментариев в JS используется двойной слэш //

02-06-2017 19:30:36

Squatter пишет:

удалено, избыточное цитирование, п.п. 2.9
Аналогично, как и с кнопкой можно, через условие. Если не находит какой-нибудь элемент (которого точно нет на странице входа) после перехода «URL GOTO= МОЯ ССЫЛКА», то играет ваш код авторизации.

Я понимаю, но меня выкинуть может в момент, когда происходит URL GOTO= МОЯ ССЫЛКА и скрипт ищет кнопку Subtext. Если меня выкинет в этот момент, скрипт будет искать кнопку TAG POS=1 TYPE=DIV ATTR=ID:subText на странице авторизации и не найдет её и будет по кругу крутить этот URL GOTO= МОЯ ССЫЛКА и меня вечно будет кидать на страницу авторизации.
Т.е мне нужно как-то сделать условие if в самом условии if.

замечание

InfSub

Опять проблема, сделал скрипт по вашей наводке. Этот JS меня начинает выводить из себя, одно починил другое сломал. Опять проблема

скрытый текст

Выделить код

Код:

for (;;){
        var err = iimPlay("CODE:URL GOTO=МОЯ ССЫЛКА\nTAG POS=1 TYPE=DIV ATTR=ID:subText");
        if (err<0){continue;}
        iimPlay("CODE:TAB T=1\nWAIT SECONDS=2\nTAG POS=2 TYPE=BUTTON ATTR=TXT:\nWAIT SECONDS=1\nTAG POS=1 TYPE=DIV ATTR=TXT:МОЙ ПОЧТОВЫЙ ЯЩИК\nWAIT SECONDS=3\nTAG POS=1 TYPE=BUTTON ATTR=TXT:ПодписатьсяПодписка<SP>оформленаОтменить<SP>подписку\nWAIT SECONDS=2\nCLICK X=94 Y=494\nWAIT SECONDS=2\nCLICK X=102 Y=498\nWAIT SECONDS=2\nTAG POS=1 TYPE=BUTTON ATTR=TXT:ПодписатьсяПодписка<SP>оформленаОтменить<SP>подписку\nWAIT SECONDS=3\nEVENT TYPE=CLICK SELECTOR=\"#body-container>DIV:nth-of-type(5)>DIV>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>BUTTON:nth-of-type(2)\" BUTTON=0\nWAIT SECONDS=3\nTAB T=1\nWAIT SECONDS=3\nTAG POS=2 TYPE=DIV ATTR=TXT:Verify<SP>Subscription\nWAIT SECONDS=2\nTAG POS=1 TYPE=DIV ATTR=TXT:Next<SP>>>\nWAIT SECONDS=1\nTAB CLOSEALLOTHERS\nWAIT SECONDS=1");
}


Код из команды iimPlay(ДЛИННЫЙ СКРИПТ) не до конца доигрывает и снова кидает на цикл var err :angry:

FastSpeed

скрытый текст

Выделить код

Код:

 iimPlay("CODE:TAB T=1\nWAIT SECONDS=2");
 iimPlay("CODE:TAG POS=2 TYPE=BUTTON ATTR=TXT:\nWAIT SECONDS=1");
 iimPlay("CODE:TAG POS=1 TYPE=DIV ATTR=TXT:МОЙ ПОЧТОВЫЙ ЯЩИК\nWAIT SECONDS=3");
 iimPlay("CODE:TAG POS=1 TYPE=BUTTON ATTR=TXT:ПодписатьсяПодписка<SP>оформленаОтменить<SP>подписку\nWAIT SECONDS=2");
 iimPlay("CODE:CLICK X=94 Y=494\nWAIT SECONDS=2\nCLICK X=102 Y=498\nWAIT SECONDS=2");
 iimPlay("CODE:TAG POS=1 TYPE=BUTTON ATTR=TXT:ПодписатьсяПодписка<SP>оформленаОтменить<SP>подписку\nWAIT SECONDS=3");
 iimPlay("CODE:EVENT TYPE=CLICK SELECTOR=\"#body-container>DIV:nth-of-type(5)>DIV>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>BUTTON:nth-of-type(2)\" BUTTON=0\nWAIT SECONDS=3");
 iimPlay("CODE:TAB T=1\nWAIT SECONDS=3");
 iimPlay("CODE:TAG POS=2 TYPE=DIV ATTR=TXT:Verify<SP>Subscription\nWAIT SECONDS=2");
 iimPlay("CODE:TAG POS=1 TYPE=DIV ATTR=TXT:Next<SP>>>\nWAIT SECONDS=1");
 iimPlay("CODE:TAB CLOSEALLOTHERS\nWAIT SECONDS=1");


02-06-2017 22:26:52
Ребят подскажите! Складываю массивы одним оператором.

скрытый текст

Выделить код

Код:

function summa ()
{
var a = inportData('file:///D:\\1.txt');    
for(var sum = i = 0; i < a.length; i++) sum += +a [i]; 
alert (sum);
}

function inportData(a) {
    var b = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
    return b.open("GET", a, false), b.send(), b.responseText.split("\n")
};


Все работает. Но мне надо брать через разделитель(т.е. строка имеет вид"2-ла-ла-ла|14 |ла-ла-ла-23.45 |",надо брать 14).Как правильно сделать?

скрытый текст

Выделить код

Код:

a[i].split('|')[1];


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

Выделить код

Код:

sum += eval(a[i].split('|')[1]);


код публикуется в тегах code под спойлером

InfSub

karginaolga
Я так пробовал,выдает "NaN", при чем если выбираю [0],то работает. Не пойму что не так.

Спасибо!работает. проблема была из-за переноса пустой строки

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

скрытый текст

Выделить код

Код:

TAB T=1
URL GOTO=http://www.seosprint.net/work-task.php?f=1
wait seconds =2
TAB OPEN
TAB T=2
wait seconds =2
URL GOTO=http://www.seosprint.net/work-task-read.php?adv=1242043&cnt=a4646eb2044408c2ef167cdee56a1cb6

wait seconds =2
TAB OPEN
TAB T=3
wait seconds =2
URL GOTO=http://www.seosprint.net/work-task-read.php?adv=1073002&cnt=01cf6406f3fa7383e6b416d22f229e00

wait seconds =2
TAB OPEN
TAB T=4
wait seconds =2
URL GOTO=http://www.seosprint.net/work-task-read.php?adv=904173&cnt=e2219e7febd8ccdf1604b3a3da430487


код публикуется в тегах code внутри спойлера


InfSub

vodogrey
Да, можно, читайте про JavaScript и условный оператор if.. else..

InfSub пишет:

vodogrey
Да, можно, читайте про JavaScript и условный оператор if.. else..

а сколько будет стоить помощь спеца в этом вопросе? возможно к вам обратиться?

vodogrey
Для этого есть отдельная тема

Кто-нить знает, как перезагрузить отдельный элемент на странице (например рекапчу) без перезагрузки всей страницы.
По- гуглил нашел: document.getElementById('id').innerHtml = newContent;

По гуглив ответа не нашел. Такая ерунда: с каждым перезапуском ff растет кол-во значков в трее. (скрыть значки и уведомления - не помогает). Может ли это действовать на производительность и есть ли у кого решение ?

Уважаемые! Каким способом можно проверить скриптом активность другого скрипта (работает он или вызвал ошибку)?

dim222
например, как-то так: писать ошибку в файл, если все ок - писать что ОК

06-06-2017 14:06:25

dim222 пишет:

растет кол-во значков в трее

где-то в было описание, как убивать хвосты FF при закрытии, т.е. скрипт сам убивал все лишнее, после чего закрывал FF - поищите, скорее всего - это было в теме про капчи

dim222

Правильно закрывайте firefox  и не будет проблем, вот https://forum.mozilla-russia.org/viewto … 52#p718352

InfSub
Примеры имитации клика мыши на Javascript:
Не всегда возможно сделать клик с помощью этого кода -

скрытый текст

Выделить код

Код:

window.document.querySelector("#sbm").click();


Альтернативный вариант, добавьте в FAQ
скрытый текст

Выделить код

Код:

// Кликнет по элементу с 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);
}


добавлено в FAQ

InfSub

InfSub пишет:

как-то так: писать ошибку в файл

Не понимаю! Как это сделать,если скрипт остановлен?
Бывает сутками работает, а потом ошибка. Догадываюсь,что из-за 'GET' и 'eval' при старте скрипта.

script1

Выделить код

Код:

X = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
var namber=1;

x=new X();
x.open('GET','file:///D:/bots.js',false);
x.send(null);
eval(x.response);


script2 (при старте ругается на это)

Выделить код

Код:

 function inportData(a) {
    var b = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
    return b.open("GET", a, false), b.send(), b.responseText.split("\n") // НА ЭТУ СТРОКУ
}


07-06-2017 06:22:53
Hamzat
Спасибо!

dim222
Функция try{}catch(){}

Тяму не хватает одним оператором выбирать только нужные строки(сумма по прошлой дате).Подскажите. Строка имеет вид "8.6|la-la-la|123la-la-la|"(8.6-прошлая дата).

как выбрать строки имеющие в первой колонке "past_date"?

Выделить код

Код:

var file_work='D:\\';


var d = new Date();
d.setDate(d.getDate()-1);
past_date=d.getDate()+'.'+ (d.getMonth()+1);
    
var a = inportData('file:///'+file_work+'conclusion.txt');    
for(var sum = i = 0; i < a.length-1; i++) sum += +a[i].split('|')[2].replace(/\D+/g,"");


dim222
мне, не совсем понятен вопрос и ваш код, что именно вы хотите?
если судить по вашему коду, то строку вида: сумма1сумма2сумма3 и т.д.
но при этом вы заменяете цифры на пустую строку... зачем?

InfSub

данный код суммирует массив( по 3-ей колонке , оставляя цифры) ,он рабочий

Выделить код

Код:

var a = inportData('file:///'+file_work+'conclusion.txt');    
for(var sum = i = 0; i < a.length-1; i++) sum += +a[i].split('|')[2].replace(/\D+/g,"");


мне надо что бы суммировал только нужные строки (в которых присутствует прошлая дата "past_date"(1-я колонка)

dim222

скрытый текст

Выделить код

Код:

if (a[i].split('|')[0] < new Date().getDate()+'.'+ (new Date().getMonth()+1)) sum += +a[i].split('|')[2].replace(/\D+/g,"");

karginaolga
Спасибо большое!:) Данным методом пробовал, alert(sum)-выдает 0.Можно конечно перебором, но хотелось бы одним оператором.Может  быть для этого ' if ' не подходит.

так работает(суммирует массив по прошлой дате),но не могу понять почему.

Выделить код

Код:

var file_work='D:\\bots\\CapNum\\';

 function inportData(a) {
    var b = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
    return b.open("GET", a, false), b.send(), b.responseText.split("\n")
}

var d = new Date();
d.setDate(d.getDate()-1);
past_date=d.getDate()+'.'+ (d.getMonth()+1);

var a = inportData('file:///'+file_work+'conclusion.txt');  
  
for(var sum = i = 0; i < a.length-1; i++)if (a[i].split('|')[0] > past_date) sum += +a[i].split('|')[2].replace(/\D+/g,"");
alert(sum)


По идее должно быть '== past_date',а не' > past_date'.

dim222
возможно a[i].split('|')[0] не число, поставьте +a[i].split('|')[0]
и past_date это она вчера была вчерашним днем а при сравнении она уже будущее

karginaolga
Вы правы "if (+a[i].split('|')[0] == past_date)",выдает как надо. Ноль выдавало , потому что сложения дальше не происходило. Спасибо!

Уважаемые, подскажите пожалуйста простым примером ,как выбрать переменную с самым низким числом. Допустим имеем "var a=13,b=7,c=3"(при этом все или несколько могут иметь одно и тоже число(выбрать любое из одинаковых)). Мне нужно для работы с .тхт файлами (определить в каком наименьшее кол-во строк).

dim222
добавляйте переменные в массив

скрытый текст

Выделить код

Код:

function compareNumeric(a, b) {
  if (a > b) return 1;
  if (a < b) return -1;
}

var arr = [ 1, 20, 15 ];

arr.sort(compareNumeric);

alert(arr);

karginaolga
Спасибо!

'alert(arr);' выдает весь массив т.е. '1, 20, 15'. Я что-то не так делаю?

dim222
alert(arr); выдаст 1,15,20 он отсортирует по возрастанию
alert(arr[0]); минимальное число

karginaolga
Понял!Благодарю!

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

Устанавливал дополнения Close Proxy Authentication и Proxy Authentication не работает.
Версию браузера откатывать нехотлось бы из за этих дополнений. Можно ли это сделать через iim или js ?

Алим
Попробуй через telnet+cmd.

За пол-года "не работы " с мозиллой потерял-забыл много полезного. Скиньте плиз .vbs -с загрузкой нужного профиля и старта скрипта (желательно с задержкой , для  загрузки расширений).Спасибо!!!

Помогите с пробелами:

скрытый текст

Выделить код

Код:

appendToFile("C:\\Users\\Google Диск\\scripts\\1.txt", text);


как только не пробовали:
"Google Диск"  "Google%20Диск" "Google\sДиск" "Google<SP>Диск"
и не надо писать типа используйте пути без пробелов
так тоже не работает
скрытый текст

Выделить код

Код:

appendToFile("C:\\Users\\Google", "Диск\\scripts\\1.txt", text);


Спасибо

karginaolga

Помогите с пробелами

Может код функции appendToFile тоже покажите?

Hamzat

скрытый текст

Выделить код

Код:

var appendToFile = function (fileName, text) {
    var fileDescriptor = imns.FIO.openNode(fileName);
    imns.FIO.appendTextFile(fileDescriptor, text);
}

var log = function (msg) {
    var text = msg + "\r\n";
    appendToFile("C:\\Users\\Google Диск\\scripts\\1.txt", text);
}

karginaolga

скрытый текст

Выделить код

Код:

var appendToFile = function (fileName, text) {
    var fileDescriptor = imns.FIO.openNode(fileName);
    imns.FIO.appendTextFile(fileDescriptor, text);
}

var log = function (msg) {
    var text = msg + "\r\n";
    appendToFile("C:\\Users\\Google Диск\\scripts\\1.txt", text);
}


Проверил, проблем не наблюдаю, не с русскими символами в пути, не с пробелами. iMacros 8.9.7 Firefox 35.01

Hamzat
Спасибо, перезагрузились и то-же заработало

Здравствуйте! Как прописать команду для автолайкера, когда лайк в разных местах? Раньше был клик по коорданитам, теперь он не актуален.

Ассоль пишет:

Здравствуйте! Как прописать команду для автолайкера, когда лайк в разных местах? Раньше был клик по коорданитам, теперь он не актуален.

Найти в коде, отвечающем за кнопку Лайка неизменяемый элемент.

25-06-2017 17:34:32
Здравствуйте. Скрипт должен нажимать в новостной ленте Одноклассников кнопку "класс"

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


, но нажатие не происходит, хотя саму кнопку скрипт находит, она подсвечивается. В чём проблема?

скрытый текст

Выделить код

Код:

iimPlayCode('SET !TIMEOUT_STEP 0 \n SET !ERRORIGNORE YES \n TAG POS=1 TYPE=DIV ATTR=data-url:*LikeBlock*');


отсутствует спойлер

InfSub

Помогите, пожалуйста, с JS If Else. Просто сам в JS вообще 0. Пытался понять, но что то никак пока(

Вот сам код

Выделить код

Код:

TAB T=1
REFRESH
TAG POS=1 TYPE=DIV ATTR=CLASS:name EXTRACT=TXT
SET !CLIPBOARD {{!EXTRACT}}
TAB T=2
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:nameForm ATTR=NAME:name CONTENT={{!CLIPBOARD}}
TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:nameForm ATTR=ID:add_name
TAG POS=1 TYPE=A ATTR=ID:next


Мне нужно что бы постоянно обновлялся TAB1 и проверял наличие name, если его нет, опять обновлял и так в цикле.
Если находит его, ест-но копирует, переходит на TAB2, вставляет и жмёт кнопку далее.

genstrijen
не уж то, так сложно заглянуть в официальную вики, если не знаете полный синтаксис команды?

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=A ATTR=TXT:"отмените подписку" EXTRACT=HREF



26-06-2017 03:38:53

udalov пишет:

нажатие не происходит, хотя саму кнопку скрипт находит, она подсвечивается. В чём проблема?

используйте EVENT Mode

26-06-2017 03:45:21
Antor

скрытый текст

Выделить код

Код:

while(1){
    iimPlayCode(`
        TAB T=1
        REFRESH
        TAG POS=1 TYPE=DIV ATTR=CLASS:name EXTRACT=TXT
    `);
    if(iimGetExtract()!='#EANF#'){
        iimPlayCode(`
            TAB T=1
            TAB T=2
            TAG POS=1 TYPE=INPUT:TEXT FORM=ID:nameForm ATTR=NAME:name CONTENT="'+iimGetExtract()+'"
            TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:nameForm ATTR=ID:add_name
            TAG POS=1 TYPE=A ATTR=ID:next
            TAB T=1
        `);
    };
};

Всем привет!:rock:
Подскажите как сделать проверку двух условий?
Я делаю так но что-то не так.

скрытый текст

Выделить код

Код:

if (sel!=='ВКонтакте')||(sel!=='Не ВКонтакте') break;

Gergi
Лишние круглые скобки убери

genstrijen
decodeURIComponent()

InfSub, Спасибо, решил проверить на работе, но мне почему то такую ошибку бьёт

ошибка

Выделить код

Код:

Error: Variable !clipboard on line 6 is not compatible with Alertfox (Error code: -1001)


Проверяю скрипт в Mozilla 54

Antor
где, в приведенном мной коде, вы видите переменную !clipboard ?

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

Вот какая ошибка у меня сейчас и была изначально

Выделить код

Код:

TypeError: s is undefined (Error code: -1001)


И в этот момент в Imacros, очень быстро меняясь, показывает, что активны команды
скрытый текст

Выделить код

Код:

iimPlayCode(`
if(iimGetExtract()!='#EANF#'){
iimPlayCode(`


код публикуется в тегах code под спойлером


InfSub

Antor
версия iMacros какая? 9.0.3? Если да, то читайте

InfSub пишет:

версия iMacros какая? 9.0.3

Спасибо огромное, заработало.
А тут нет репутации?

Antor
форум старый, нету

26-06-2017 14:27:42
genstrijen
вам уже ответили выше, js функция decodeURIComponent()

genstrijen
window.location;
а по моему вы просто лентяй

genstrijen

скрытый текст

Выделить код

Код:

iimPlay("CODE:URL GOTO=urlname\n" +
"ADD !EXTRACT {{!URLCURRENT}}\n" +
"SAVEAS TYPE=EXTRACT FOLDER=C:\\FOLDERNAME FILE=URL.txt");


Читать http://wiki.imacros.net/URLCURRENT

genstrijen

скрытый текст

Выделить код

Код:

var url = window.location;
iimPlayCode ('SET !EXTRACT '+url+'\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=URL.txt');

InfSub, дома поверил скрипт, какой то баг. Он когда переходит на TAB2 то не вставляет скопированный текст, а вставляет:

скрытый текст

Выделить код

Код:

 '+iimGetExtract()+'


И сам скрипт в цикл уходит, он вставляет этот текст, а потом идёт опять на первую вкладку, "копирует", потом на вторую - вставляет '+iimGetExtract()+' и так по кругу.
Помогите опять, пожалуйста.
Imacros 8.9.7

Antor

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:nameForm ATTR=NAME:name CONTENT=${iimGetExtract()}

Antor, karginaolga - да, сорри, ошибся, сначала в обычном варианте писал, потом для наглядности изменил код, а про ${iimGetExtract()} - забыл, спасибо karginaolga

Если меняю эту

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:nameForm ATTR=NAME:name CONTENT="'+iimGetExtract()+'"
на эту
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:nameForm ATTR=NAME:name CONTENT=${iimGetExtract()}


он вообще не переходит на TAB2.
Проверил ещё раз, как только появляется знак $ , он сразу перестаёт делать переход.
И из цикла как вывести(запускаю без цикла в плагине)?

Antor
полный код приведите

Код

Выделить код

Код:

while(1){
    iimPlayCode(`
        TAB T=1
        REFRESH
        TAG POS=1 TYPE=DIV ATTR=CLASS:name EXTRACT=TXT
    `);
    if(iimGetExtract()!='#EANF#'){
        iimPlayCode(`
            TAB T=1
            TAB T=2
            TAG POS=1 TYPE=INPUT:TEXT FORM=ID:nameForm ATTR=NAME:name CONTENT=${iimGetExtract()}
            TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:nameForm ATTR=ID:add_name
            TAG POS=1 TYPE=A ATTR=ID:next
            TAB T=1
        `);
    };
};

Antor
что приходит в EXTRACT'e? слово, строка?

Одно слово, цифро-буквенное.

Antor
вы уверены, что в нем нет пробелов?
я бы рекомендовал все равно записать строку в кавычках, вот так:

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:nameForm ATTR=NAME:name CONTENT="${iimGetExtract()}"


как говорится во избежание
так же, рекомендовал бы еще раз проверить версию имакрос, если не отключить автообновление, то при перезапуске браузера она обновится на 9.0.3
как вариант, попробуйте версию FF ниже 45

проверил у себя, построив запрос по аналогии с вашим, все переключается с 1 вкладки на вторую, проблема может возникнуть именно на 2 вкладке, если код не будет найден, то скрипт на 2й вкладке так и останется, чтобы этого избежаеть, думаю, имеет смысл добавить в код для 2й вкладки строку
скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES


в начале блока команд
вот так:
скрытый текст

Выделить код

Код:

if(iimGetExtract()!='#EANF#'){
        iimPlayCode(`
            SET !ERRORIGNORE YES
            TAB T=1
            TAB T=2
            ....



27-06-2017 00:21:01

Antor пишет:

И из цикла как вывести(запускаю без цикла в плагине)?

не ленитесь, прочитайте что такое циклы, в том числе о while() и о for()

InfSub, всё так же не переключается на вторую вкладку, но:
Мистика какая то, проверил обычным скриптом, который я сюда скидывал изначально, не на JS. Обратил внимание, что в EXTRACT скопировалось слово с пробелами т.е. 5-6 пробелов, слово и опять 5-6 пробелов. хотя их не должно быть. по крайней мере раньше не было.
Решил проверить, установил Imacros 9.0.3 и там копируется нормально, пробелов нет, копируется само слово.
Вернулся на 8.9.7, опять пробелы.

Вопрос, может ли из-за пробелов в копируемом слове в EXTRACT быть проблемы с этим кодом?

Выделить код

Код:

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:nameForm ATTR=NAME:name CONTENT="${iimGetExtract()}"


Не судите строго, в общем сделал вот так:
скрытый текст

Выделить код

Код:

while(1){
    iimPlayCode(`
        TAB T=1
        REFRESH
        TAG POS=1 TYPE=DIV ATTR=CLASS:name EXTRACT=TXT
        SET !CLIPBOARD {{!EXTRACT}}
    `);
    if(iimGetExtract()!='#EANF#'){
        iimPlayCode(`
            TAB T=1
            TAB T=2
            TAG POS=1 TYPE=INPUT:TEXT FORM=ID:nameForm ATTR=NAME:name CONTENT={{!CLIPBOARD}}
            TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:nameForm ATTR=ID:add_name
            TAG POS=1 TYPE=A ATTR=ID:next
            WAIT SECONDS=360
        `);
    };
};


Но у меня остаётся проблема, как убрать непонятные пробелы?

InfSub пишет:

не ленитесь, прочитайте что такое циклы, в том числе о while() и о for()

Дело не в лени, наверное надо потихоньку учить JS вообще.

Antor пишет:

надо потихоньку учить JS

Именно
Если использовать iimGetExtract() то с помощью trim():

скрытый текст

Выделить код

Код:

... CONTENT="${iimGetExtract().trim()}"

genstrijen
iMacros не работает с кодировками, поддерживается только UTF-8

genstrijen
запускайте командную строку через iMacros с аргументами, а не бат файл

Уважаемые! Не могу заставить .vbs запустить профиль

что не так делаю?

Выделить код

Код:

Dim WshShell
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """D:\FF\App\Firefox\firefox4.exe" -no-remote -profile "D:\FF\Data\profile"  "file:///D:/loader.html?m=1.js", 0, false
WScript.Sleep 3000
Set WshShell=Nothing


Выдает ошибку " Предполагается наличие окончания инструкции "

genstrijen
примерно так:

скрытый текст

Выделить код

Код:

function batn() {
    var Cc = Components.classes, Ci = Components.interfaces, args = ['бла-бла', 'бла-бла', 'бла-бла', 'бла-бла'];
    var proc = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
    var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
    file.initWithPath("C:\\Windows\\system32\\cmd.exe");
    proc.init(file);
    proc.run(false, args, args.length);
}


конкретно есть топик заказ скриптов

genstrijen
поищите в гугле, все должно работать если правильно пропишите

genstrijen пишет:

Даже пробовал простую команду прописать в аргументах 'ping' но увы... ничего. Странно...

как выше написала karginaolga, гуглите или читайте справку к cmd.exe - передавать в cmd команду ping или любую другую, таким образом - бесполезно, получите только окно консоли
элементарно можете убедиться в этом, запустив из окна "Выполнить" (Win+R)

скрытый текст

Выделить код

Код:

C:\Windows\system32\cmd.exe ping


27-06-2017 23:38:20

dim222 пишет:

WshShell.Run

потестил, правильный вариант, видимо таков:

скрытый текст

Выделить код

Код:

WshShell.Run "D:\FF\App\Firefox\firefox4.exe -no-remote -profile D:\FF\Data\profile  file:///D:/loader.html?m=1.js", 0, false

genstrijen
а скопировать и вставить не вариант??
['/c youtube-dl '+url+''];
и удалите 9-11 строки они не нужны

InfSub
Спасибо!
У меня в FF установлены расширения (одно "minimize on start and close"(сворачивает окно браузера при старте),другое "minimizeToTray(сворачивает в трей при сворачивании окна)"). Если запускать профиль через .bat ,то все работает. а при vbs срабатывает только сворачивание окна "minimize on start and close". Не знаете по какой причине "minimizeToTray" не работает? Или может есть другой вариант свернуть в трей.

dim222
удалите , достаточно выполнить  minimizeToTray()

28-06-2017 19:59:27
genstrijen
Давайте вам дам предпосылку

скрытый текст

Выделить код

Код:

         /***-= Функция перемещения =-***/
function copy() {
    var Cc = Components.classes, Ci = Components.interfaces, args = ['/C', 'copy', ''+Path+'seosprint.png', ''+Path+'copy'];
    var proc = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
    var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
    file.initWithPath("C:\\Windows\\system32\\cmd.exe");
    proc.init(file);
    proc.run(false, args, args.length);
}

karginaolga пишет:

удалите , достаточно выполнить  minimizeToTray()

Как?

dim222
так, лень писать, ищите в гугле и будет счастье

28-06-2017 20:32:27
genstrijen
вы с кавычками намудрили

genstrijen
а вы уверены что система вам позволяет делать такие операции, у себя проверила все работает

genstrijen
попробуйте так:

скрытый текст

Выделить код

Код:

start https://forum.mozilla-russia.org


устала я вас за поводок тянуть

Удалено, оскорбление

скрытый текст

Выделить код

Код:

var url = 'https://forum.mozilla-russia.org';

dom();

function dom() {
    var Cc = Components.classes, Ci = Components.interfaces, args = ['/C', 'start', ''+url+''];
    var proc = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
    var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
    file.initWithPath("C:\\Windows\\system32\\cmd.exe");
    proc.init(file);
    proc.run(false, args, args.length);
}


InfSub

karginaolga пишет:

удалено, оскорбление

За помощь и подсказки, а так же за потраченное время, БЛАГОДАРЮ! и говорю СПАСИБО!
удалено, мат, оскорбление, мизогинизм
InfSub

genstrijen
вам написали что надо было удалить строки удалено, оскорбление

InfSub

karginaolga
удалено, оскорбление Ещё раз повторяю, что строку удаления вкладки УДАЛЯТЬ НЕЛЬЗЯ! И другие строки тоже нельзя удалять, поскольку тогда нарушился бы алгоритм работы скрипа! (кроме одной единственной строки которая сохраняла URL в файл, хотя она в данном случае никакой роли не играла)

28-06-2017 23:22:01
как бы там ни было, а за помощь и затраченное время все равно СПАСИБО ещё раз)


InfSub

С сохранением не извлекает, а без сохранения извлекает.
Как сделать чтобы извлекало после сохранения?

скрытый текст

Выделить код

Код:


// не извлекает с сохранением

iimPlayCode('SET !EXTRACT лимон\n'+
'SAVEAS TYPE=EXTRACT FOLDER=* FILE=файл.txt')
извечь = iimGetLastExtract()
alert(извечь)

// извлекает без сохранения

iimPlayCode('SET !EXTRACT апельсин')
извечь = iimGetLastExtract()
alert(извечь)

Алим
это нормальное поведение iMacros - служебная переменная {{!EXTRACT}} очищается после SAVEAS ...
соответственно, просто сохраните данные в другую переменную и передайте их в {{!EXTRACT}} после сохранения, либо сохраняйте данные уже после того, как получили их через iimGetLastExtract()

InfSub спасибо за разъяснение.

Помогите перевести этот код макроса в js

скрытый текст

Выделить код

Код:

SET !EXTRACT "https://www.facebook.com/groups/slizario/?ref=group_browse_new"
SET !EXTRACT EVAL("'m.facebook.com/groups/{{!EXTRACT}}'.replace('?ref=group_browse_new','').replace('https://www.facebook.com/groups/','')")
PROMPT {{!EXTRACT}}


Удалить лишнее я могу, но вот как потом приписать
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


ссылки на внешние ресурсы - публикуется в тегах noindex под спойлером
не могу понять


InfSub

Алим

скрытый текст

Выделить код

Код:

SET !EXTRACT EVAL("'m.facebook.com/groups/{{!EXTRACT}}'.replace('?ref=group_browse_new','').replace('www','m')")

karginaolga пишет:

так, лень писать, ищите в гугле и будет счастье

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

Вот это тоже не могу заставить работать

Свернуть все окна рабочего стола Windows

Выделить код

Код:

var f1 = WScript.CreateObject("Shell.Application");
 f1.MinimizeAll();

dim222

скрытый текст

Выделить код

Код:

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()//разворачиваем браузер


добавлено в FAQ

InfSub

karginaolga
Спасибо!:)

Есть ли способы игнорировать диалоговое окно , как описанное здесь?
Пробовал прописать в about:config "dom.successive_dialog_time_limit = 0", проверил alert-ом, но безрезультатно.

скрытый текст

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

скрытый текст

Зебра пишет:

Наверное только то, что вы тут пытаетесь ввести в заблуждение??? да?

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

04-07-2017 03:25:38

Зебра пишет:

Почему так происходит? Это особенность js? А на iim было бы иначе?

И - да, это особенность работы iMacros с js скриптами, но особенность более поздних версий iMacros, а не версии 7.3.0.0, которая устанавливается на FF 3.6.6.
iim скрипты - работают без тормозов сутками и на более поздних версиях FF вплоть до последних, с js - все сложнее, вплоть до перезапуска FF из скрипта, чтобы убрать тормоза появляющиеся со временем.

Кстати, а существует ли рабочий вариант полной очистки истории в мозиле через js?
Если средствами макроса пробовать, то никакого эффекта после применения команды CLEAR вообще не заметил.
Вызвать тупо окно очистки через EVENT можно

скрытый текст

Выделить код

Код:

EVENT TYPE=KEYPRESS SELECTOR="HTML>BODY" KEY=46 MODIFIERS="ctrl|shift"


Но как enter нажать в этой же команде?
Честно погуглил англоязычные форумы – решения так и не встретил.

Squatter
Смотрите тему про капчу, там были нормальные варианты очистки браузера, вы же, пытаетесь изобрести велосипед

Команда CLEAR только очищает куки и то не все

Подскажите почему перестало извлекать?
Год назад где то все было нормально.

скрытый текст

Выделить код

Код:

iimPlayCode('SET !DATASOURCE data.txt\nSET !DATASOURCE_LINE 1\nSET !EXTRACT {{!COL1}}');
login = iimGetExtract();


Ошибка:

TypeError: s is undefined (Error code: -1001)

код публикуется в тегах code внутри спойлера
ошибки публикуются в тегах quote (цитата)


Firefox 54.0.1
Imacros 9.0.3


InfSub

iMacroz пишет:

Imacros 9.0.3

Поставьте 8.9.7

И действительно, помогло. Спасибо!

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

kaizersin
Список файлов получить можно только сторонними инструментами, например vbs или cmd скриптом, или подготовить вручную
Удалить можно с помощью iMacros

InfSub пишет:

kaizersin
Список файлов получить можно только сторонними инструментами, например vbs или cmd скриптом, или подготовить вручную
Удалить можно с помощью iMacros

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

скрытый текст

А как вытащить кусок текста(всегда разный), пробовал getElementsByClassName, но он за собой еще пару слов не нужных тащит, можно как-то обрезать?

А как сделать так, что если условие не верное, чтобы скрипт считывал loop--, а если верное не считывал?

скрытый текст

Выделить код

Код:

var loop = 1

for(i=0;i<10;i++){

iimPlayCode('TAG POS='+loop+' TYPE=* ATTR=*:*')

if(iimPlayCode('*')>0){

// не считывает минус

}else{

// считывает минус
loop--

}
}

Всем привет .
Есть часть кода

скрытый текст

Выделить код

Код:

TAB CLOSEALLOTHERS
SET !ERRORIGNORE YES
SET !ENCRYPTION NO
URL GOTO=http://site.ru/
ONLOGIN USER=admin PASSWORD=adm


Нужно что бы из файла url бралась строка и вставлялась сюда URL GOTO={{!COL1}} грубо говоря
Из файла Login  - USER= {{!COL2}}
Из файла Pass - PASSWORD= {{!COL3}}
Как это реализовать ?
в базе много строк , и чтобы по очереди из каждого файла была выборка

Log1n
здесь

07-07-2017 17:34:49

Данный  .vbs нажимает на клавиатуре  клавишу .

Выделить код

Код:

set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "клавиша"


Уверен что это не возможно,но все-таки Возможно ли с помощью js передать наименование клавиши?

dim222 пишет:

Log1n
здесь

Там работа с прокси и js ,а у меня работа с текстом

Всем привет. Кто нибудь пробовал входить в аккаунты при помощи подмены значений в куках? Интересно, возможно ли это средствами js? Мог бы получиться довольно изящный способ логиниться:)

Log1n пишет:

Нужно что бы из файла url бралась строка

http://wiki.imacros.net/!DATASOURCE

Log1n пишет:

в базе много строк , и чтобы по очереди из каждого файла была выборка

http://wiki.imacros.net/!LOOP

08-07-2017 13:19:35

Anynak пишет:

при помощи подмены значений в куках

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

А куда пропал koks? Можно ли с ним связаться?

bober
умер

При использовании скрипта.js не обрабатывается.В чем может быть проблема?

на дисплее отображается это
Error: unsafe CPOW usage forbidden, line 1 (Error code: -991)

"небезопасное использование  запрещено". Как исправить? Браузер последний, Imacros 8.9.7

dim222
Не обрабатывается что? Можно по подробней?

Подскажите, в какую сторону копать, чтобы макросом выделить заданное слово на странице?
Допустим, на странице есть несколько слов "тест", надо их все выделить.

JavaScript.

Пример можно?

Журавлёва

скрытый текст

Выделить код

Код:

var textToFind = "пипка"
content.document.body.innerHTML = content.document.body.innerHTML.replace(eval("/"+textToFind+"/gi"),"<a name="+textToFind+" style='background:red'>"+textToFind+"</a>");

nikolay1987, спасибо, решено.

nikolay1987, а не могли бы вы так переделать этот код, чтобы в нём не было EVAL, а то, кое-где на него ругань идёт.

Здравствуйте! Подскажите пожалуйста тему или ответ как с помощью аймакроса сохранять куки и потом с ними оперировать? Например: чтобы при входе в аккаунт не вводить каждый раз логин и пароль, просто куки нужные в нужное поле браузера вводим с помощью аймакроса и всё.
Как такое раелизовать? Тут где-то были сообщения на эту тему, да что-то не найду. Подскажите пожалуйста

Зебра
удалено, избыточное цитирование
не надо цитировать сообщение написанное перед вами, во всяком случае полностью, достаточно имени

Вот вам готовые функции, а там уже сами разберетесь.

скрытый текст

Выделить код

Код:

setCookie: function(cookies) {

            imJS.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) {

            imJS.Cu.import("resource://gre/modules/Services.jsm")
            var services = Services.cookies.getCookiesFromHost(domain);
            var listCookies = [];

            while (services.hasMoreElements()) {
                var cookie = services.getNext().QueryInterface(imJS.Ci.nsICookie2);
                listCookies.push(cookie);
            };

            return listCookies;
        },


InfSub

Hamzat спасибо!

Hamzat
удалено, избыточное цитирование
Есть вопрос: а что это за исполнение записи? Оно ж ошибку выдаёт, если так записано:

аймакрос ругается на то как тут записано

Выделить код

Код:

        getCookie: function(domain) {
...
        },


и в конце там запятая зачем-то поставлена. Это так надо? да? Но так оно ошибку даёт и ничего не работает.
А вот если убрать запятую вконце и внчале записать по другому, более привычному, то есть убрать из скобок слово domain записать его перед скобками, а скобки оставить пустыми, то вроеде никакой ошибки не возникает и аймакрос не ругается:
а так Не ругается аймакрос

Выделить код

Код:

  function domain() {
...
        }


комментарий к спойлеру пишется в открывающем теге, а не в закрывающем
Так вот я и хочу узнать, а в чем тут прикол? Или код изначально вылален неправильно записаный, или может тут есть ещё варианты записи, когда запятые в конце применяются и начало функции тоже по другому записывается? Если так, то почему аймакрос ругается на такой вариант записи? :sick:

за удаление комментариев модератора, в следующий раз - будет бан - как за саботаж
замечание



InfSub

Зебра пишет:

и в конце там запятая зачем-то поставлена. Это так надо? да? Но так оно ошибку даёт и ничего не работает.

данный код выдран из контекста какого-то объекта, по этому и имеет такую запись
перепишите в стандартный вид:
function name(){...};
думаю будет работать корректно

Зебра

Так вот я и хочу узнать, а в чем тут прикол?

Как верно подметил модератор, код вырван из объекта, если вы не разбираетесь в этом, то мне кажется вам рано соваться в такие вещи, лучше изучите немного основы JS.

скрытый текст

Выделить код

Код:

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 /* Передаем массив кукис */ )


спасибо, добавлено в FAQ

InfSub

В аймакросе есть команда "пауза", когда макрос останавливается и ждёт команды для продолжения работы.
Если в этот момент браузером перейти по любой ссылке, то макрос самопроизвольно возобновляет работу, то есть, срывается с паузы.
Что это такое и есть ли способ это как-то исправить?

Здравствуйте, столкнулся с проблемой:
Использую команду клик по координатам - CLICK X=n Y=m
Так вот, если прокрутить страницу, то клик происходит непонятно где...хотя должен быть на том же элементе...
Без прокрутки страницы - всё четко работает.
Пробовал разные версии мозилы(начиная с 39 и до 52), аймакрос 8.9.7.
Это баг или я чего-то не так понимаю?:rolleyes:

nikolay1987
Клик по координатам, на то и клик по координатам, что жмет на определенную точку на экране, а не на определенный элемент, вы сами себе противоречите

InfSub
Ну в этих координатах находится элемент и его координаты относительно начала страницы - неизменны
Click X Y - тоже кликает по координатам от начала страницы
В чем я заблудился? :)

nikolay1987
в том что координаты рассчитываются не от начала страницы а относительно окна браузера
соответственно, прокрутка страницы приводит к тому, что "под кликом" оказывается другой элемент

InfSub
Я тоже так вначале подумал, но это не так...
Провел простой эксперимент:
Зашел на яндекс, прокрутил , записал клик по кнопке найти(координаты пишет всегда от начала страницы, сколько не крути)
В *iim потер переход на яндекс, нажал воспроизвести(не меняя координат) - не попадает...

Раздуплился....

nikolay1987

скрытый текст

Выделить код

Код:

        window.addEventListener('click', function(e) {
            alert('screen: ' + e.screenX + 'x' + e.screenY + '\npage: ' + e.pageX + 'x' + e.pageY + '\nclient: ' + e.clientX + 'x' + e.clientY);
        }, false);

InfSub
karginaolga
спасибо.

В общем пару часов уже бьюсь  головой об стену и не понимаю почему этот код не работает

скрытый текст

Выделить код

Код:

for(i=1; i<=1; i++){                          
iimPlayCode('SET !DATASOURCE ‪‪D:\\test.txt\nSET !DATASOURCE_LINE 1\nSET !EXTRACT {{!COL1}}');
r=iimGetExtract();
alert(r)
} 


Выдаёт эту ошибку и всё
скрытый текст

Выделить код

Код:

NS_ERROR_FILE_UNRECOGNIZED_PATH: Component returned failure code: 0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH) [nsILocalFile.initWithPath], line 1 (Error code: -1001)



10-08-2017 22:10:29
Содержимое файла D:\\test.txt просто 123 три цифры и больше ничего нет ни кавычек ни надписей

удалено, сообщение типа UP

InfSub

Gergi
Где в вашем сообщении версия браузера и iMacros'a?

Версия браузера 24.0 версия макроса 8.8.2

Gergi
попробуйте другую версию iMacros, например наиболее стабильную 8.9.7
или сделайте полный сброс браузера для начала и проверьте еще раз

Пробовал,но на 24й мазиле становиться только версия 8.8.7 и ниже

[firefox]
Всем привет!! Возникла проблема с одним сайтом (если нужно будет напишу ссылочку). Необходимо ввести число в поле, однако средствами imacros никак не получается(все уже перепробовал). Полазал в инспекторе и нашел вот такой js скрипт связанный с этим элементом:

скрытый текст

Выделить код

Код:

function() {
  if (parseFloat(this[_0x3cee[9]]) > _0x485ax101[_0x3cee[2266]]) {
    this[_0x3cee[9]] = _0x485ax101[_0x3cee[2266]]
  };
  var _0x485ax17 = this[_0x3cee[9]];
  if (_0x485ax101[_0x3cee[2269]]) {
    _0x485ax17 = _0x485ax416(_0x485ax17, _0x485ax101[_0x3cee[2266]])
  };
  _0x485ax414[_0x3cee[1771]][_0x3cee[1765]]([null, _0x485ax17]);


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

Goodjobmfk
а что именно  перепробовали? ваша просьба ни о чём

karginaolga
Пробовал реализовать через TAG, пробовал через EVENT, ну и вообще записывал макросы с разными настройками, но ничего. Либо текст вставляется но не обрабатывается сайто(как в случае с TAG), либо вообще ничего не происходит(EVENT).

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

А вот сайт где проблема возникла:

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Привет народ, как можно сделать сымитировать действия? я делаю только скрол, задержку ну и клавишу там стереть, еще что-то можно?

kaizersin, можно клики по координатам в пустые места делать, файлы сохранять, по ссылкам вперёд\назад переходить. Сложно что-то советовать, не зная цели.

udalov
удалено, избыточное цитирование
Да обычный регер, просто читал люди зенкой регали - банят,  клики по координатам это интересно, спасибо

InfSub

Мне вообще стоит ждать какую-либо помощь? Просто такое ощущение возникает, что про мою проблему все благополучно забыли.

Goodjobmfk
удалено, избыточное цитирование
Я написал на почту.

Причем писал еще двое суток тому назад. Видимо, решение этой проблемы не особо-то и нужно.

InfSub

Meldon пишет:

Я написал на почту.

Извиняюсь! Не проверял почту(даже не подумал что кто то напишет мне туда). :(

Meldon пишет:

Видимо, решение этой проблемы не особо-то и нужно.

Решение нужно очень!!!

Проблема всё ещё открыта. Надеюсь что кто нибудь поможет.

Подскажите, можно ли как-нибудь в imacros настроить игнорирование alert сообщений?
При их возникновении скрипт останавливается и необходимо вручную убирать алерт, что неудобно, и хотелось бы избежать подобных ситуаций.

userundefined пишет:

Подскажите, можно ли как-нибудь в imacros настроить игнорирование alert сообщений?

В iMacros, можно. В начале скрипта стоит прописать:

скрытый текст

Выделить код

Код:

ONDIALOG POS=1 BUTTON=OK CONTENT=

Meldon пишет:

В начале скрипта стоит прописать:

вообще, на сколько я помню, не в начале скрипта, а перед тем кодом, который вызывает alert окно

InfSub
Верно, но где появляется окно, мне, по крайней мере, не известно. Прописав в начале, - явно не прогадаешь.

Meldon
в начале, как раз - не поможет, если, конечно, у вас не однострочные скрипты

отнюдь, написав в начале цельного скрипта, макрос запомнит эту команду до конца сценария.

Meldon
Возможно, не пробовал, либо раньше так не работал

Meldon, спасибо за ответ, попробую.
А сработает ли эта команда, если alert возник на одной вкладке, а скрипт работает на другой?

Здравствуйте. Подскажите, если кто в курсе.  Второй день не могу найти и уже смог обойтись без этого, но все же очень интересует - как можно отобрать ссылки, которые НЕ содержат какого либо слова? Ну и одновременно содержат одно слово и при этом не содержат другого? Например, если нужны только ссылки в которых есть слово "stat", но при этом нет слова "gray"?

lexussii пишет:

Например, если нужны только ссылки в которых есть слово "stat", но при этом нет слова "gray"?

Есть несколько вариантов, например:

скрытый текст

Выделить код

Код:

var _true = new RegExp('stat'), _false = new RegExp('gray');
if(_true.test(link) && !(_false.test(link))){

}


link - ссылка.

По аналогии можно сделать через indexOf и search.

Meldon
ну это не приимер, это изврашение бить на массивы

karginaolga пишет:

это изврашение бить на массивы

Что ты несешь, какие массивы?

Meldon
полегче на поворотах

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

скрытый текст

Выделить код

Код:

.textContent.match(/\w+/);

Здравствуйте. Помогите разобраться с проблемой. Есть кнопка, при клике по которой постоянно меняется номер позиции. Перебрала циклом, но при первом номере POS=1 происходит клик по кнопке и страница перезагружается, соответственно меняется и POS. Вот код:

скрытый текст

Выделить код

Код:

for (z=0;z<=15;z++){
iimPlayCode('SET !TIMEOUT_STEP 0\nTAG POS='+z+' TYPE=INPUT:BUTTON  ATTR=NAME:claim_coins');}


Можно это как-нибудь побороть?

Доброго дня! Есть ли возможность в imacros или средствами js подгружать функции из отдельного файла?
К примеру есть файл functions.js, в этом файле несколько ф-ций, вот нужно из основного скрипта подгрузить ф-ции, находящиеся в functions.js

upd:
Нашел, может кому пригодится ф-ция

скрытый текст

Выделить код

Код:

function myRequire(url) {
    var ajax = new XMLHttpRequest();
    ajax.open('GET', url, false );
    ajax.onreadystatechange = function () {
        var script = ajax.response || ajax.responseText;
        eval.apply( window, [script] );
    };
    ajax.send(null);
}


код публикуется в тегах code под спойлером
второе замечание


InfSub

Господа! Подскажите, как полностью дублировать 1 вкладку во 2-ю.  Ctrl+t открывает пустую новую вкладку.

dim222
https://forum.mozilla-russia.org/viewto … 56#p641856

InfSub
Спасибо! видел ,пробовал! Но не совсем то ,что хотелось бы. Имееться в виду наличие так сказать "хака",что ли,  что бы даже капча отображалась идентичная первой вкладки. Вообще средствами FF это возможно ?

dim222
я не слышал о такой возможности

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

скрытый текст

Выделить код

Код:

var q=['1','2','3','4','5','6'];
как в цикле вывести сначала 1 
потом 1,2
далее 1,2,3
и т.д. до "весь массив"

dim222
что мешает вычесть или прибавить 1 к значению из массива или для более правильного результата использовать текущий ключ +1 и -1?

28-09-2017 18:39:00

как-то так, например:

Выделить код

Код:

var q=['1','2','3','4','5','6'],i,j='',k='';
for(i=0;i<count(q);i++){
    if(i > 0 && i<(count(q)-1)){
        j=q[i+1];
        if(i > 1){
            k=q[i-1];
        };
    };
};

InfSub
Значения из массива,просто для примера.На самом деле они имеют другой разный вид. Покажите пожалуйста пример с выводом на алерт. А то с вашим кодом ,просто перебирает массив,причем начиная с 2 и до 4.
Надо чтобы с каждым кругом в цикле алертом выводилось  последующее значение вместе с предыдущими (т.е. сначала q[0], далее q[0],q[1] ,потом q[0],q[1],q[2], и т.д.)
Т.е. как бы создавать массив из значения и добавлять следующее  значение и так по кругу пока не переберет весь изначальный массив.

dim222 пишет:

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

Ещё вариант

скрытый текст

Выделить код

Код:

var arr = ['1','2','3','4','5','6'];

for (var i = 0; i < arr.length; i++){
  var stroka = ''
  for (var j = 0; j<=i; j++){
    stroka += (arr[j]+',')
  }
  console.log(stroka);
}

dvomaks
То, что надо. Благодарствую!

Привет, не подскажите как выдрать от сюда название города (Tampa) в буфер?

скрытый текст

Выделить код

Код:

URL GOTO=https://whoer.net/
TAG POS=1 TYPE=SPAN ATTR=TXT:United<SP>States<SP>(US)
TAG POS=1 TYPE=SPAN ATTR=TXT:Florida<SP>(FL)
TAG POS=1 TYPE=SPAN ATTR=TXT:Tampa


Из-за того что там более одного раза встречается "TAG POS=1", не получается скопировать.

kaizersin

скрытый текст

Выделить код

Код:

var gorod = window.document.querySelectorAll('div.item dl.myip-list dd span.cont')[2].textContent;
alert(gorod);

karginaolga
удалено, избыточное цитирование

Спасибо

InfSub

Добрейший вечер :)
Вчера узнал про iMacros, читаю уроки, голова кругом. Скажите пожалуйста, можно ли средствами программы, без JS, поочередно взять из файла строчки и вбить их в форму-строку в браузере? Как бы это сделать, не могу понять.
Нашел как подключить текстовый файл, как указать разделители. Про команду TEG пока читаю...

(p.s форма - это одна строка ввода, консоль сервера. Мне нужно много раз выполнить в ней команду с никами пользователей из файла.)

P.S2 разобрался примерно как писать в консольке макросом, теперь понять, как бы в аргументе CONTENT подставлять ники. А если еще и получится вместе с командой, то вообще круто.

Типа CONTENT = "/set player" + VAR + "clear". И так перебрать весь "players.txt". Там около 30 000 ников.

Ребята, вопрос. После отключение настройки:

Выделить код

Код:

Отключаем возможность сайтов хранить некоторые настройки
dom.storage.enabled = false

Половина кранов сразу перестают работать, ибо походу это какие скрытые логи по которым собственно наверно и банят. Вопрос как найти и почистить эти настройки? Вопрос гуглил, говорят, что все лежит здесь Firefox\App\DefaultData\profiles\мой профиль\cache2\doomed, но папка пустая :sick:

FastSpeed
название темы читали? похоже что нет
вопросы по капчам и кранам в соседней теме

это отключение хтмл5, не лезте если не знаете, потом будите спрашивать как вернуть все назад
стучитесь в личку подправлю

Уважаемые! как правильно в .bat передать переменную?

так не получается

Выделить код

Код:

var Cc=Components.classes, Ci=Components.interfaces, args=['SET', 'pathToImage=D:\BOTS\CAPTCHA\1.png'];
var proc=Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
var file=Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
file.initWithPath('D:\\BOTS\\CAPTCHA\\test.bat'); 
proc.init(file); proc.run(false, args, args.length);
iimPlayCode('WAIT SECONDS=1');

как текст из переменной imacros передать в JS и потом обратно в imacros ??

пример

Выделить код

Код:

var macro;
macro = "CODE:";
macro += "TAG POS=1 TYPE=INPUT:TEXT FORM=ID:admin ATTR=NAME:name EXTRACT=TXT" + "\n";

iimPlay(macro)

var b = iimGetExtract(1)

iimSet("VAR1",b)
iimPlayCode("PROMPT Извлеченный<sp>текст<sp>{{!VAR1}}\n PROMPT Извлеченный<sp>текст<sp>"+b+"\n")


var1 выводит правильно, а переменную b только до пробела, т.е если извлечено 111 все выводит правильно, если извлечено 111 222 var выводит правильно, а b выводит 111 и поле для ввода.

stanny
а faq иди wiki полистать о синтаксисе языка imacros и о синтаксисе команды prompt не судьба?
текст содержащий пробелы должен быть обрамлен в двойные кавычки или пробелы заменены на <sp>

prompt принимает два значения:
первое - текст всплывающего окна, второе (необязательное) - имя переменной, в которую попадет значение из поля ввода

09-10-2017 22:05:23
dim222
а зачем вы *.bat файлу передаете значение, вместо *.exe файла?
предположу что бантик надо передать как параметр к cmd.exe, вместе со всеми параметрами

InfSub пишет:

текст содержащий пробелы должен быть обрамлен в двойные кавычки

я это знаю, но в таком виде вообще пишет ошибку, из за того что код в iimplay кавычках, любые другие кавычки кроме "+b+" ломают весь код и выдает ошибку

в вики и фак ничего нету про переменные из imacros в js и обратно, кроме iimset, но хочется переменную напрямую передавать, без пробелов все передается, с пробелами нет

скрытый текст

Выделить код

Код:

так не работает
iimPlayCode("PROMPT "Извлеченный текст"+b+"\n");

и так тоже
iimPlayCode("PROMPT "Извлеченный текст""+b+"\n");


З.Ы.
получилось так, но двойные кавычки почти везде поменял на одинарные
скрытый текст

Выделить код

Код:

iimPlayCode('PROMPT "Извлеченный текст '+a+'"\n');

stanny пишет:

я это знаю, но в таком виде вообще пишет ошибку, из за того что код в iimplay кавычках, любые другие кавычки кроме "+b+" ломают весь код и выдает ошибку

читайте - что такое экранирование спец. символов
читайте о переменных в js и о том, как в них записываются значения и в какие кавычки их можно обрамлять, как минимум 3 варианта кавычек
на форуме все это есть, разве что не все вынесено текстом в FAQ, так как есть видео уроки, да и ответы находятся элементарно поиском
в офф. вики - полно полезной информации для новичка, в том числе и о том, как записывать переменные iMacros (правила синтаксиса языка), да там может и не быть примера записи iMacros-кода в js, хотя очень сильно в этом сомневаюсь, но даже если нет, то учите js, если вы элементарно не понимаете, как записать код, содержащий кавычки, в js-переменную.

InfSub пишет:

может и не быть примера записи iMacros-кода в js

в вики по js функционалу кроме iim... ничего нету. Родные переменные из imacros и js переменные записываются по разному, так что синтаксис тут разный. Вот пример из вики, PROMPT  Extracted<SP>data:{{!EXTRACT}}, по нему логично предположить что в js это будет выглядеть как iimPlayCode('PROMPT  Extracted<SP>data:'+a+'\n'); но это не так из за того что !EXTRACT по видимому сам подставляет <sp>, а после переноса в JS переменную и обратно он уже идет как простой текст с пробелами.

З.Ы. кстати может есть какой-то костыль чтобы извлекать var'ы, без того чтобы их загонять в экстракт и потом вытаскивать через iimGetExtract ( что при нескольких переменных работает не корректно )??  может какой-то iimGetVar0......imGetVar9 придумали ??

stanny пишет:

но это не так из за того что !EXTRACT по видимому сам подставляет <sp>

ок, тогда по вашему - логично предположить что запись вида:

скрытый текст

Выделить код

Код:

SET MYVAR какой-то текст


не будет ошибочной, тем не менее - это не так и будет ошибка синтаксиса из-за того что присутствует пробел
давайте не будем обвинять всех и вся в том, что вы не знаете синтаксиса языка iMacros
мне, извините, лениво сейчас перерывать вики, но поверьте, я имакросом занимаюсь около 3 лет и 90% знаний о нем почерпнуто из вики, в том числе и синтаксис и методы взаимодействия с js

stanny пишет:

может есть какой-то костыль чтобы извлекать var'ы, без того чтобы их загонять в экстракт и потом вытаскивать через iimGetExtract

нету, у всех все работает нормально при понимании принципов работы iMacros вообще и в связке с js в частности

stanny пишет:

при нескольких переменных работает не корректно

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

10-10-2017 16:22:13
P.S.

stanny пишет:

кстати может есть какой-то костыль

впрочем - есть, можно с помощью js без iMacros'a вытащить данные - вот только это не всегда - удобно делать с помощью js

10-10-2017 16:25:47
P.S.S.
iMacros для FF написан на JS, так что, все что он может сделать, можно сделать и с помощью JS, вот только в 90% случаев проще написать 1-2 строки кода на iMacros, чем писать 50 строк кода на js (бывают исключения, но это уже частности)

10-10-2017 16:30:24
P.S.S.S.

Получение любой информации со страницы при помощи Javascript
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

InfSub пишет:

не будет ошибочной

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

InfSub пишет:

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

ваш пост https://forum.mozilla-russia.org/viewto … 72#p695672

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

stanny
на всякий случай, если вдруг не заметили, в предыдущий пост еще кое что добавил в конце

stanny пишет:

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

пример из любого другого языка программирования, например из того же js
данные пришедшие из формы или из другой другой переменной уже, образно говоря, ограничены кавычками, данные передаваемые в коде, т.е. записью вида:
переменная = 'значение'
ограничиваются кавычками, для правильного распознавания интерпретатором

10-10-2017 16:51:02

stanny пишет:

ваш пост

да, и там описано как этого избежать:

InfSub пишет:

- стараться не использовать несколько EXTRACT'ов подряд, если вы не уверены, что первый EXTRACT - не будет пустым

10-10-2017 16:53:31
stanny
т.е. суть в том, что достаточно разбить iMacros код на части и извлекать данные так, чтобы один EXTRACT=TXT был равен одному iimGetExtract() 
несколько косноязычно выразился, но думаю понять можно идею

нагородил тут короче, цикл в цикле, с кучей проверок на null, проставил iimset, чтобы кавычки везде не переделывать :)

колхозстайл

Выделить код

Код:

for (a=1;a<=1;a++){

iimPlayCode("TAG POS="+a+" TYPE=IMG ATTR=SRC:https://www.........*\n TAG POS=1 TYPE=A ATTR=TXT:Атрибут\n");

for (i=1;1<2;i++){
iimSet("VAR0",i)
var macro;
macro = "CODE:";
macro += "TAG POS={{!var0}} TYPE=INPUT:TEXT FORM=ID:adminForm ATTR=NAME:attr_ean[] EXTRACT=TXT" + "\n";

iimPlay(macro)
var zapros = iimGetLastExtract(1)


if(zapros!=null & zapros!='#EANF#'){
iimSet("VAR1",zapros)    
iimSet("VAR0",i)
iimPlayCode("SET !ERRORIGNORE YES\n TAB T=2\n FRAME NAME=frSheet\n TAG POS=1 TYPE=TD ATTR=TXT:{{!var1}}\n TAG POS=R1 TYPE=TD ATTR=TXT:* EXTRACT=TXT\n TAB T=1\n");

var zapros1 = iimGetLastExtract(1)


if(zapros1!=null & zapros1!='#EANF#'){
iimSet("VAR2", zapros1)    
iimSet("VAR0",i)
iimPlayCode("TAG POS={{!var0}} TYPE=INPUT:TEXT FORM=ID:adminForm ATTR=NAME:attrib_price[] CONTENT={{!var2}}\n SET !EXTRACT NULL\n");
}
else {    
iimPlayCode('Prompt "Нет цены для атрибута '+zapros+'"\n SET !EXTRACT NULL\n');    
}

iimDisplay('Прошли атрибутов: '+ (i)) 
}

else {

iimPlayCode("SET !ERRORIGNORE YES\n TAG POS=1 TYPE=A ATTR=TXT:Информация<SP>о<SP>товаре\n TAG POS=1 TYPE=INPUT:TEXT FORM=ID:adminForm ATTR=ID:product_ean EXTRACT=TXT\n");
var zapros2 = iimGetLastExtract(1)


if(zapros2!=null){
iimSet("VAR3", zapros2)    
iimPlayCode("SET !ERRORIGNORE YES\n TAB T=2\n FRAME NAME=frSheet\n TAG POS=1 TYPE=TD ATTR=TXT:{{!var3}}\n TAG POS=R1 TYPE=TD ATTR=TXT:* EXTRACT=TXT\n TAB T=1\n");

var zapros3 = iimGetLastExtract(1)
if(zapros3!='#EANF#'){
iimSet("VAR4", zapros3)    
iimPlayCode("TAG POS=1 TYPE=INPUT:TEXT FORM=ID:adminForm ATTR=ID:product_price CONTENT={{!var4}}\n");
}
else
{
iimPlayCode('PROMPT "Нет цены для атрибута '+zapros2+'"\n')    
}
    
}
else
{
iimPlayCode("PROMPT Нет<sp>атрибута\n");    
}

iimDisplay("Пройдено "+i+" атрибутов"); 
break
}

}

iimPlayCode("PROMPT Продолжить<sp>если<sp>все<sp>правильно\n PAUSE\n TAG POS=1 TYPE=BUTTON ATTR=TXT:Сохранить<SP>и<SP>закрыть\n");
}


все зло в кавычках :)

10-10-2017 17:01:07

InfSub пишет:

не будет пустым

вот именно что экстракты бывают пустые и я прописал чтобы выскочил промт, что нужно заполнить вручную

stanny
использовать iimSet() или конкатенацию строк - дело ваше (на вкус и цвет)
при конкатенации, да и вообще в js я бы рекомендовал использовать одинарные кавычки, как минимум проще разобраться где у вас код js, а где iMacros
впрочем, как уже писал ранее - экранирование спец. символов ни кто не отменял:

скрытый текст

Выделить код

Код:

var zapros = iimGetLastExtract();
iimPlayCode("TAG POS=1 TYPE=TD ATTR=TXT:\""+zapros+"\"\n TAG POS=R1 TYPE=TD ATTR=TXT:* EXTRACT=TXT")


10-10-2017 17:11:56

stanny пишет:

я прописал чтобы выскочил промт, что нужно заполнить вручную

что мешает сделать prompt на js?

скрытый текст

Выделить код

Код:

var text = prompt('Нет атрибута');

InfSub пишет:

что мешает сделать prompt на js

а какая разница ? нужный функционал выполняет, и так сойдет :D

stanny
лишний код, как минимум, впрочем - дело ваше

Добрый день, уважаемые форумчане!
Есть таблица на странице такого вида:

скрытый текст

Выделить код

Код:

<table role="presentation" id="gridview-1256-table" class="x-gridview-1256-table x-grid-table x-grid-with-col-lines x-grid-with-row-lines" style="width: 880px;" tabindex="-1" cellspacing="0" cellpadding="0" border="0">
    <colgroup><col class="x-grid-cell-gridcolumn-1248" style="width:126px"></colgroup>
    <colgroup><col class="x-grid-cell-gridcolumn-1249" style="width:126px"></colgroup>
    <colgroup><col class="x-grid-cell-datecolumn-1250" style="width:126px"></colgroup>
    <colgroup><col class="x-grid-cell-gridcolumn-1251" style="width:125px"></colgroup>
    <colgroup><col class="x-grid-cell-gridcolumn-1252" style="width:126px"></colgroup>
    <colgroup><col class="x-grid-cell-gridcolumn-1253" style="width:126px"></colgroup>
    <colgroup><col class="x-grid-cell-textActionColumn-1254" style="width:125px"></colgroup>
    <tbody id="gridview-1256-body">
        <tr role="row" id="gridview-1256-record-14400958" data-boundview="gridview-1256" data-recordid="14400958" data-recordindex="0" class="x-grid-row x-grid-data-row x-grid-row-before-selected x-grid-row-before-focused" tabindex="-1">
            <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1248 x-grid-cell-first " id="ext-gen1896">
                <div class="x-grid-cell-inner " style="text-align:center;">Водоотведение</div>
            </td>
            <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1249 " id="ext-gen1897">
                <div class="x-grid-cell-inner " style="text-align:center;">Предоставляется</div>
            </td>
            <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-datecolumn-1250 " id="ext-gen1898">
                <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
            </td>
            <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1251 " id="ext-gen1899">
                <div class="x-grid-cell-inner " style="text-align:center;">куб.м</div>
            </td>
            <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1252 " id="ext-gen1900">
                <div class="x-grid-cell-inner " style="text-align:center;">8545.08</div>
            </td>
            <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1253 " id="ext-gen1901">
                <div class="x-grid-cell-inner " style="text-align:center;">215763.21</div>
            </td>
            <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-textActionColumn-1254 x-grid-cell-last  x-text-action-col-cell" id="ext-gen1902">
                <div class="x-grid-cell-inner x-grid-cell-inner-text-action-col" style="text-align:center;"> 
                    <a href="javascript:void(0);" style="margin:0 4px;color:-webkit-link;" title="Редактировать данные по услуге" class="x-action-text x-action-col-0  ">Открыть</a>
                </div>
            </td>
        </tr>
        <tr role="row" id="gridview-1256-record-14400955" data-boundview="gridview-1256" data-recordid="14400955" data-recordindex="1" class="x-grid-row x-grid-row-alt x-grid-data-row x-grid-row-selected x-grid-row-focused" tabindex="-1">
            <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1248 x-grid-cell-first " id="ext-gen1903">
                <div class="x-grid-cell-inner " style="text-align:center;">Горячее водоснабжение</div>
            </td>
            <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1249 " id="ext-gen1904">
                <div class="x-grid-cell-inner " style="text-align:center;">Предоставляется</div>
            </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-datecolumn-1250 " id="ext-gen1905">
            <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1251 " id="ext-gen1906">
            <div class="x-grid-cell-inner " style="text-align:center;">Гкал/куб.м</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1252 " id="ext-gen1907">
            <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1253 " id="ext-gen1908">
            <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-textActionColumn-1254 x-grid-cell-last  x-text-action-col-cell" id="ext-gen1909">
            <div class="x-grid-cell-inner x-grid-cell-inner-text-action-col" style="text-align:center;"> 
                <a href="javascript:void(0);" style="margin:0 4px;color:-webkit-link;" title="Редактировать данные по услуге" class="x-action-text x-action-col-0  ">Открыть</a>
            </div>
        </td>
    </tr>
    <tr role="row" id="gridview-1256-record-14400962" data-boundview="gridview-1256" data-recordid="14400962" data-recordindex="2" class="x-grid-row x-grid-data-row" tabindex="-1">
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1248 x-grid-cell-first " id="ext-gen1910">
            <div class="x-grid-cell-inner " style="text-align:center;">Отопление</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1249 " id="ext-gen1911">
            <div class="x-grid-cell-inner " style="text-align:center;">Предоставляется</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-datecolumn-1250 " id="ext-gen1912">
            <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1251 " id="ext-gen1913">
            <div class="x-grid-cell-inner " style="text-align:center;">Гкал</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1252 " id="ext-gen1914">
            <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1253 " id="ext-gen1915">
            <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-textActionColumn-1254 x-grid-cell-last  x-text-action-col-cell" id="ext-gen1916">
            <div class="x-grid-cell-inner x-grid-cell-inner-text-action-col" style="text-align:center;"> 
                <a href="javascript:void(0);" style="margin:0 4px;color:-webkit-link;" title="Редактировать данные по услуге" class="x-action-text x-action-col-0  ">Открыть</a>
            </div>
        </td>
    </tr>
    <tr role="row" id="gridview-1256-record-14400960" data-boundview="gridview-1256" data-recordid="14400960" data-recordindex="3" class="x-grid-row x-grid-row-alt x-grid-data-row" tabindex="-1">
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1248 x-grid-cell-first " id="ext-gen1917">
            <div class="x-grid-cell-inner " style="text-align:center;">Холодное водоснабжение</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1249 " id="ext-gen1918">
            <div class="x-grid-cell-inner " style="text-align:center;">Предоставляется</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-datecolumn-1250 " id="ext-gen1919">
            <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1251 " id="ext-gen1920">
            <div class="x-grid-cell-inner " style="text-align:center;">куб.м</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1252 " id="ext-gen1921">
            <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1253 " id="ext-gen1922">
            <div class="x-grid-cell-inner " style="text-align:center;">&nbsp;</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-textActionColumn-1254 x-grid-cell-last  x-text-action-col-cell" id="ext-gen1923">
            <div class="x-grid-cell-inner x-grid-cell-inner-text-action-col" style="text-align:center;"> 
                <a href="javascript:void(0);" style="margin:0 4px;color:-webkit-link;" title="Редактировать данные по услуге" class="x-action-text x-action-col-0  ">Открыть</a>
            </div>
        </td>
    </tr>
</tbody>
</table>


Задача такая: c применением JS и IMacros найти перебором <tr>, в котором есть элемент <div> с текстом "Холодное водоснабжение" и получить его индекс, затем нужно кликнуть по ссылке, находящейся в том же <tr>.
Задача с индексом решена таким путем:
скрытый текст

Выделить код

Код:

function rowIndex (trs, content) {
  for (var i = 0, l = trs.length; i < l; i++) {
    if (trs[i].textContent.match(content)) return i;
  }
}
 
var trs = window.document.querySelectorAll('tr');
var itr = rowIndex(trs, "Холодное водоснабжение");


Вопрос: как теперь кликнуть по ссылке, находящейся в том же <tr>?

Aikyaira

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=DIV ATTR=Class:x-grid-cell-inner*&&TXT:Холодное<sp>водоснабжение
TAG POS=R1 TYPE=A ATTR=HREF:javascript:void(0)


код публикуется в тегах code под спойлером

InfSub

stanny
удалено, избыточное цитирование

Не находит такой элемент.:(
К тому же, на сайте динамические классы и id, поэтому к ним привязываться нельзя, если только не получать их с помощью js. А как это сделать-я не знаю.


InfSub

Aikyaira
удалено, избыточное цитирование

так у меня сработало, видимо в хрефе imacros только ссылки понимает

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=DIV ATTR=TXT:Холодное<SP>водоснабжение
TAG POS=r1 TYPE=A ATTR=TXT:Открыть


код публикуется в тегах code под спойлером
замечание


InfSub

stanny
удалено, избыточное цитирование
Огромнейшее спасибо, помогло!


InfSub

stanny пишет:

видимо в хрефе imacros только ссылки понимает

а нет )), первый вариант тоже рабочий, я просто точку с запятой в конце не дописал javascript:void(0);  :D

Можно ли присвоить значение колонки файла, который !Datasource, переменной js?
что-то типа того:

скрытый текст

Выделить код

Код:

var otoplen;
otoplen = "{{!COL27}}";


И как правильно это сделать?

Aikyaira

скрытый текст

Выделить код

Код:

iimPlayCode('SET !DATASOURCE ..... \nSET !EXTRACT {{!COL27}}');
var otoplen = iimGetLastExtract();

Всем привет :rock:
В текстовом файле есть вот такая запись "forum65-1234" как мне вытащить только то что до тире - получается это forum65
Раньше как то этот делал,сейчас не могу вспомнить.

Делаю вот так не получается

скрытый текст

Выделить код

Код:

iimPlayCode('SET !DATASOURCE C:\\1.txt\nSET !DATASOURCE_LINE 1\nSET !EXTRACT {{!COL1}}'); 
f1r=iimGetExtract().replace('-',',');
alert(f1r);

Gergi

скрытый текст

Выделить код

Код:

f1r=iimGetExtract().split('-')[0]

nikolay1987
Благодарю:rock:

Добрый день!
Который день мучаюсь с макросом:

скрытый текст

Выделить код

Код:

for (i = 8; i < 9; i++)
{
macroobsh +=  "CODE:" + "\n"; 
macroobsh +=  "SET !DATASOURCE reformaobemku.csv" + "\n"; 
macroobsh += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroobsh +=  "TAG POS=1 TYPE=SPAN ATTR=TXT:Объемы<SP>по<SP>коммунальным<SP>услугам" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=DIV ATTR=TXT:Водоотведение" + "\n"; 
macroobsh +=  "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=14 TYPE=DIV ATTR=CLASS:\"x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first\"" + "\n";
macroobsh +=  "TAG POS=1 TYPE=LI ATTR=TXT:\"{{!COL6}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalVolume CONTENT=\"{{!COL7}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:accruedConsumer CONTENT=\"{{!COL8}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidByConsumersAmount CONTENT=\"{{!COL9}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:consumerArrears CONTENT=\"{{!COL10}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:cashToProviderPayment CONTENT=\"{{!COL11}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidToSupplierAmount CONTENT=\"{{!COL12}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:arrearToSupplierAmount CONTENT=\"{{!COL13}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalPenalties CONTENT=\"{{!COL14}}\"" + "\n"; 
macroobsh +=  "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
macroobsh +=  "SET !EXTRACT {{!COL17}}" + "\n";
var gvs = iimGetExtract();
if (gvs != ""){
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "TAG POS=1 TYPE=DIV ATTR=TXT:Горячее<SP>водоснабжение" + "\n"; 
macroobsh +=  "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n"; 
macroobsh +=  "TAG POS=14 TYPE=DIV ATTR=CLASS:\"x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first\"" + "\n";
macroobsh +=  "TAG POS=1 TYPE=LI ATTR=TXT:\"{{!COL16}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalVolume CONTENT=\"{{!COL17}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:accruedConsumer CONTENT=\"{{!COL18}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidByConsumersAmount CONTENT=\"{{!COL19}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:consumerArrears CONTENT=\"{{!COL20}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:cashToProviderPayment CONTENT=\"{{!COL21}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidToSupplierAmount CONTENT=\"{{!COL22}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:arrearToSupplierAmount CONTENT=\"{{!COL23}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalPenalties CONTENT=\"{{!COL24}}\"" + "\n"; 
macroobsh +=  "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
}
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "SET !EXTRACT {{!COL27}}" + "\n";
var otoplen = iimGetExtract();
if (otoplen != ""){
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "TAG POS=1 TYPE=DIV ATTR=TXT:Отопление" + "\n"; 
macroobsh +=  "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n"; 
macroobsh +=  "TAG POS=14 TYPE=DIV ATTR=CLASS:\"x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first\"" + "\n";
macroobsh +=  "TAG POS=1 TYPE=LI ATTR=TXT:\"{{!COL26}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalVolume CONTENT=\"{{!COL27}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:accruedConsumer CONTENT=\"{{!COL28}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidByConsumersAmount CONTENT=\"{{!COL29}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:consumerArrears CONTENT=\"{{!COL30}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:cashToProviderPayment CONTENT=\"{{!COL31}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidToSupplierAmount CONTENT=\"{{!COL32}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:arrearToSupplierAmount CONTENT=\"{{!COL33}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalPenalties CONTENT=\"{{!COL34}}\"" + "\n"; 
macroobsh +=  "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
}
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "SET !EXTRACT {{!COL37}}" + "\n";
var xvs = iimGetExtract();
if (xvs != ""){
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "TAG POS=1 TYPE=DIV ATTR=TXT:Холодное<SP>водоснабжение" + "\n"; 
macroobsh +=  "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n"; 
macroobsh +=  "TAG POS=14 TYPE=DIV ATTR=CLASS:\"x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first\"" + "\n";
macroobsh +=  "TAG POS=1 TYPE=LI ATTR=TXT:\"{{!COL36}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalVolume CONTENT=\"{{!COL37}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:accruedConsumer CONTENT=\"{{!COL38}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidByConsumersAmount CONTENT=\"{{!COL39}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:consumerArrears CONTENT=\"{{!COL40}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:cashToProviderPayment CONTENT=\"{{!COL41}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidToSupplierAmount CONTENT=\"{{!COL42}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:arrearToSupplierAmount CONTENT=\"{{!COL43}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalPenalties CONTENT=\"{{!COL44}}\"" + "\n"; 
macroobsh +=  "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
}
macroobsh +=  "SET !EXTRACT NULL" + "\n";
iimPlay(macroobsh);
}


Макрос доходит до первого
скрытый текст

Выделить код

Код:

macroobsh +=  "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n";


и завершается без всяких ошибок.
Что я делаю не так?

Aikyaira
собственно идем в FAQ и смотрим уроки для новичков в том числе и по связке iMacros+JS

InfSub
Имеете ввиду, что нужно писать через iimPlay, а не через добавление к переменной?

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

Aikyaira пишет:

Макрос

как-то так

скрытый текст

Выделить код

Код:

for (i = 8; i < 9; i++)
{

var macroobsh;
macroobsh =  "CODE:"; 
macroobsh +=  "SET !DATASOURCE reformaobemku.csv" + "\n"; 
macroobsh += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroobsh +=  "TAG POS=1 TYPE=SPAN ATTR=TXT:Объемы<SP>по<SP>коммунальным<SP>услугам" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=DIV ATTR=TXT:Водоотведение" + "\n"; 
macroobsh +=  "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=14 TYPE=DIV ATTR=CLASS:\"x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first\"" + "\n";
macroobsh +=  "TAG POS=1 TYPE=LI ATTR=TXT:\"{{!COL6}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalVolume CONTENT=\"{{!COL7}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:accruedConsumer CONTENT=\"{{!COL8}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidByConsumersAmount CONTENT=\"{{!COL9}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:consumerArrears CONTENT=\"{{!COL10}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:cashToProviderPayment CONTENT=\"{{!COL11}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidToSupplierAmount CONTENT=\"{{!COL12}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:arrearToSupplierAmount CONTENT=\"{{!COL13}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalPenalties CONTENT=\"{{!COL14}}\"" + "\n"; 
macroobsh +=  "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
macroobsh +=  "SET !EXTRACT {{!COL17}}" + "\n";
iimPlay(macroobsh);
var gvs = iimGetExtract();
if (gvs !=null){

var macroobsh;
macroobsh =  "CODE:"; 
macroobsh +=  "SET !DATASOURCE reformaobemku.csv" + "\n"; 
macroobsh += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "TAG POS=1 TYPE=DIV ATTR=TXT:Горячее<SP>водоснабжение" + "\n"; 
macroobsh +=  "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n"; 
macroobsh +=  "TAG POS=14 TYPE=DIV ATTR=CLASS:\"x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first\"" + "\n";
macroobsh +=  "TAG POS=1 TYPE=LI ATTR=TXT:\"{{!COL16}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalVolume CONTENT=\"{{!COL17}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:accruedConsumer CONTENT=\"{{!COL18}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidByConsumersAmount CONTENT=\"{{!COL19}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:consumerArrears CONTENT=\"{{!COL20}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:cashToProviderPayment CONTENT=\"{{!COL21}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidToSupplierAmount CONTENT=\"{{!COL22}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:arrearToSupplierAmount CONTENT=\"{{!COL23}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalPenalties CONTENT=\"{{!COL24}}\"" + "\n"; 
macroobsh +=  "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
iimPlay(macroobsh);
}

var macroobsh;
macroobsh =  "CODE:"; 
macroobsh +=  "SET !DATASOURCE reformaobemku.csv" + "\n"; 
macroobsh += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные    
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "SET !EXTRACT {{!COL27}}" + "\n";
iimPlay(macroobsh);
var otoplen = iimGetExtract();
if (otoplen != ""){
    
var macroobsh;
macroobsh =  "CODE:"; 
macroobsh +=  "SET !DATASOURCE reformaobemku.csv" + "\n"; 
macroobsh += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные    
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "TAG POS=1 TYPE=DIV ATTR=TXT:Отопление" + "\n"; 
macroobsh +=  "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n"; 
macroobsh +=  "TAG POS=14 TYPE=DIV ATTR=CLASS:\"x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first\"" + "\n";
macroobsh +=  "TAG POS=1 TYPE=LI ATTR=TXT:\"{{!COL26}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalVolume CONTENT=\"{{!COL27}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:accruedConsumer CONTENT=\"{{!COL28}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidByConsumersAmount CONTENT=\"{{!COL29}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:consumerArrears CONTENT=\"{{!COL30}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:cashToProviderPayment CONTENT=\"{{!COL31}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidToSupplierAmount CONTENT=\"{{!COL32}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:arrearToSupplierAmount CONTENT=\"{{!COL33}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalPenalties CONTENT=\"{{!COL34}}\"" + "\n"; 
macroobsh +=  "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
iimPlay(macroobsh);
}
var macroobsh;
macroobsh =  "CODE:"; 
macroobsh +=  "SET !DATASOURCE reformaobemku.csv" + "\n"; 
macroobsh += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "SET !EXTRACT {{!COL37}}" + "\n";
iimPlay(macroobsh) 
var xvs = iimGetExtract();
if (xvs !=null){

var macroobsh;
macroobsh =  "CODE:"; 
macroobsh +=  "SET !DATASOURCE reformaobemku.csv" + "\n"; 
macroobsh += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroobsh +=  "SET !EXTRACT NULL" + "\n";
macroobsh +=  "TAG POS=1 TYPE=DIV ATTR=TXT:Холодное<SP>водоснабжение" + "\n"; 
macroobsh +=  "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n"; 
macroobsh +=  "TAG POS=14 TYPE=DIV ATTR=CLASS:\"x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first\"" + "\n";
macroobsh +=  "TAG POS=1 TYPE=LI ATTR=TXT:\"{{!COL36}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalVolume CONTENT=\"{{!COL37}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:accruedConsumer CONTENT=\"{{!COL38}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidByConsumersAmount CONTENT=\"{{!COL39}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:consumerArrears CONTENT=\"{{!COL40}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:cashToProviderPayment CONTENT=\"{{!COL41}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:paidToSupplierAmount CONTENT=\"{{!COL42}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:arrearToSupplierAmount CONTENT=\"{{!COL43}}\"" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:totalPenalties CONTENT=\"{{!COL44}}\"" + "\n"; 
macroobsh +=  "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macroobsh +=  "WAIT SECONDS=1" + "\n"; 
macroobsh +=  "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n";
iimPlay(macroobsh) 
}
var macroobsh;
macroobsh =  "CODE:"; 
macroobsh +=  "SET !EXTRACT NULL" + "\n";
iimPlay(macroobsh);
}

stanny
Спасибо, разобралась.:)

Помогите решить делему!

скрытый текст
http://www.imageup.ru/img101/2891954/1.png

скрины публикуется под спойлером

Яндекс почта. Колонка КОМУ. При записи двух видов получается такое:

1)
скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=DIV ATTR=CONTENTEDITABLE:true&&DATA-SEPARATOR:&&DATA-TOKENIZER:Daria.Bubble.tokenizer&&DATA-CHECK-BUBBLE-PASTE:Daria.Bubble.checkPaste&&DATA-BUBBLE-COPY:Daria.Bubble.copy&&DATA-BUBBLE-DEFORMATION:Daria.Bubble.node2object&&DATA-BUBBLE-FORMATION:Daria.Bubble.update&&DATA-CLASS-BUBBLE:mail-Bubble<SP>js-bubble&&NAME:to&&TABINDEX:10&&IS:x-bubbles&&CLASS:js-compose-field<SP>mail-Bubbles&&SPELLCHECK:false


2)
скрытый текст

Выделить код

Код:

TAG POS=2 TYPE=DIV ATTR=TXT:


код публикуется в тегах code под спойлером

В обоих случаях нет значение CONTENT =

P.S Event кликом работает, но только когда браузер открыт, при свернутом проблемы.

замечание

InfSub

FastSpeed

скрытый текст

Выделить код

Код:

window.document.querySelector('div.mail-Compose-Field-Input div.js-compose-field.mail-Bubbles').textContent = "бла-бла";

Ольга, спасибо огромное! Текст вписывает в колонку, однако при отправке сообщения выдает ошибку "Поле не заполнено, Необходимо ввести адрес". Физически заполняет адрес, а фактически нет. Только после двойной отправки колонка заполняется серым цветом и сообщение на почту отправляется! Вот после ввода почтового адреса div строка подменяется на эту: div.js-compose-field mail-Bubbles mail-Bubbles-Sms. А сразу напрямую ввести в нее не получилось, пишет null.

FastSpeed

скрытый текст

Выделить код

Код:

iimPlayCode('EVENTS TYPE=KEYPRESS SELECTOR="div.mail-Compose-Field-Input div.js-compose-field.mail-Bubbles" CHARS="po4ta"')

nikolay1987, спасибо :music: Однако при свернутом браузере не работает :(

19-10-2017 13:13:42
В общем не стал гемориться, взял готовую функцию сворачивания - разворачивания браузера, сделал в момент отправки EVENT клика браузер открывается и затем сразу сворачивается.  Я же не собрался спамить по почтам яндекса, мне письмо на дедике надо будет отправлять раз в сутки к себе на телефон.

FastSpeed
значит надо наверное через MouseEvents делать

есть вопрос. знает кто нибудь как выставить задерку на .js ??
setTimeout не подходит, да и вообще все что предлагается вешает браузер
нужно типа weit(s) или sleep(s)
вариант есть но не хочется скрипт в функции оборачивать

Первый пост не судите строго! Только сейчас начал писать скрипты с  js так как понадобилось условие но только для управления сами скрипты исполнители на чистом imacros. И в стандартных скриптах не проблема ожидание проставить! От меня вопрос как в такой конструкции выйти из цикла
подключены три скрипта по отдельности test1 основные действия    test3 скрипт который надо выполнить и завершить полный цикл  test2 скрипт который гадает копчу пока не разгадает после чего должен сработать  test3 сделать что то и завершение произойти должно. Все действия происходя по порядку выполняют то что нужно капча гадается пока не разгадается но после последнего действия test3 скрипт снова начинает гадать капчу отправлять на сервис и т.д  и т.п.

скрытый текст

Выделить код

Код:

iimPlay("D:\\iMacros\\random-sites-ucoz-spam\\ test1.iim")
for (;;){
    if (iimPlayCode('TAG POS=1 TYPE=SPAN ATTR=TXT:Здесь условие и оно срабатывает')>0){ 
      iimPlay("D:\\iMacros\\random-sites-ucoz-spam\\ test3.iim")
    }  
else
{
iimPlay("D:\\iMacros\\random-sites-ucoz-spam\\ test2.iim",60)
}
}


код публикуется в тегах code под спойлером
Как мне завершить скрипт и добавить ещё фишку циклы желательно без привязки к файлу со списком запросов допустим а просто указать 10 раз выполнить и остановка всего скрипта а не там где капчу гадает?


infSub

googlenoob

googlenoob пишет:

но после последнего действия test3 скрипт снова начинает гадать капчу

скрипт действует ровно так, как вы описали в своем скрипте, а именно:
бесконечный цикл в котором при нахождении чего-то там - срабатывает условие и идет разгадывание капчи, если условие не срабатывает выполняется test2.iim
при этом test1.iim срабатывает вообще 1 раз так как не в цикле

googlenoob пишет:

как мне завершить скрипт

break - или гугл Вас забанил?!

Где в моём скрипте ставить break и как? Про запросы я для примера написал там не парсинг выдачи первую 100 выдачи yandex и без js парсил не банили! У меня другое я пробовал break ставить скрипт вообще не запускался. Вы говорите бесконечный но по условию то он должен прекратится ан нет не с начала начинает а именно капчу снова гадает. Извиняюсь конечно вы меня не поняли условие у меня настроено на то что бы завершить скрипт после того как капча разгадалась и в условии подключен такие команды

Содержимое test3.iim

Выделить код

Код:

SET !ERRORIGNORE YES
SET !REPLAYSPEED 1
WAIT SECONDS={{!VAR2}}
TAB CLOSE
TAB T=1


код публикуется в тегах code под спойлером
И все должен остановится, так как находит символы обычный текст о том, что капча разгадана, к примеру «комментарий успешно добавлен».

InfSub

googlenoob, зацени мой код и сделай также:

скрытый текст

Выделить код

Код:

//// 1. ЛОГИН В АККАУНТ
login: for (b=0; b<151; b++)
{
if(message == 150) /// 150 попыток войти в аккаунт
{
message_on_email()
log('Отправляю на почту сообщение об ошибке...');
break all
}
iimPlayCode('TAG POS=1 TYPE=INPUT:SUBMIT ATTR=ID:free_play_form_button* EXTRACT=TXT')
proverka=iimGetLastExtract();
if(proverka == 'ROLL!')
{
message=0;
break login
}
else
{
/// Ошибка на случай, если упал интернет. 150 попыток войти, иначе сообщение
logins()
message++
}
}


код публикуется в тегах code под спойлером
третье замечание
бан на неделю, п.п. 4.1


InfSub

InfSub пишет:

break - или гугл Вас забанил?!

Спасибо InfSub! Не туда пихал break как говорится «С дуру…» посмотрел ролик на youtube “iMacros javascript условия” и сделал. Это первый вопрос получается, решился но по второму что делать как мне запустить 10 раз весь скрипт мне надо что бы после разгадки капчи снова начал с начала test1.

googlenoob пишет:

как мне запустить 10 раз весь скрипт

скрытый текст

Выделить код

Код:

for (a=1;a<=10;a++){
iimPlay("D:\\iMacros\\random-sites-ucoz-spam\\ test1.iim")
for (;;){
    if (iimPlayCode('TAG POS=1 TYPE=SPAN ATTR=TXT:Здесь условие и оно срабатывает')>0){ 
      iimPlay("D:\\iMacros\\random-sites-ucoz-spam\\ test3.iim")
    }  
else
{
iimPlay("D:\\iMacros\\random-sites-ucoz-spam\\ test2.iim",60)
break
}
}

}

Я последнее время долго сидел на форуме то бишь просматривал и искал ответы накопировал и сохранил много постов с кодами и рекомендациями но не нашел ответ на следующий вопрос. Как сохранять картинку не капчу а изображение из статьи, к примеру, которое имеет размеры 700х500 но мне надо его сохранить с другим 400х300 и потом его взять и куда то вставить.

googlenoob пишет:

не нашел ответ на следующий вопрос.

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

20-10-2017 21:58:23

googlenoob пишет:

посмотрел ролик

откройте FAQ по iMacros у нас на форуме, там есть видео-уроки, где разжеваны основы, в том числе и по связке iMacros+js

Уважаемые!

Как правильно сдвинуть элемент.

Выделить код

Код:

function triggerMouseEvent (node, eventType) {
    var clickEvent = window.document.createEvent ('MouseEvents');
    clickEvent.initEvent (eventType, true, true);
    node.dispatchEvent (clickEvent);
}

triggerMouseEvent (targetNode, "mousedown"); //работает
triggerMouseEvent (targetNode, "mousemove(524,391)");//не работает

dim222
для geetest каптчи, вторая координата не нужна вообще, она всегда 0.
и вот здесь, тогда можно написать так, например

скрытый текст

Выделить код

Код:

triggerMouseEvent (targetNode, "mousemove(123,0)");


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

Egorushka1974 пишет:

только вот беда, сегодня поперли новые фоны.

Да,заметил. Думаю попробовать на картинке искать самый темный пиксель.

Добрый вечер форум.
Столкнулся с такой проблемой. Проблема с TABи (нужно работать с 2ю вкладками в разных скрипта).

скрытый текст

Выделить код

Код:

iimPlayCode('TAB T=2'); // переходит на 2ю вкладку.
iimPlayCode('TAB T=1'); // не переходит на 1ю вкладку. (ну это и понятно, скрипт то уже 2й. и оно 2ю вкладку браузра видит как TAB T=1.)


Подскажите что вы делаете в таких случаях.

darkzp пишет:

что вы делаете в таких случаях.

открываем FAQ и читаем, что там написано по этому поводу

darkzp пишет:

Подскажите что вы делаете в таких случаях.

просто меняю местами, чтобы скрипт начинался с таб 1

Кто-нибудь знает как подменить прокси в плагине "foxyproxy" в файле 'foxyproxy.xml'

как здесь подменить
[img]http://s018.radikal.ru/i518/1710/2c/9ea189aab75c.jpg[/img]

Всем привет. Не могу скопировать в текст номер телефона с авито. Было так в скрипте

скрытый текст

Выделить код

Код:

TAB T=2
TAG POS=1 TYPE=SPAN ATTR=TXT:Позвонить
TAG POS=1 TYPE=SPAN ATTR=TXT:8* EXTRACT=HREF


код публикуется в тегах code под спойлером
и всё работало. Сейчас просто копируется "#EANF#" . Последняя строчка не работает.
Уже несколько дней не могу понять почему не копирует. Поставил мазилу 46.0.1 и макрос 8.9.7 . Помогите пожалуйста. Закину денег на телефон для ускорения процесса



InfSub

serg00700
ссылку на страницу дайте

26-10-2017 22:23:15
на сколько я вижу, на авито телефон теперь в виде картинки, так что екстракиться там нечему

InfSub
он вроде и был  в виде картинке . Парсим в мобильной версии. Вот ссылка

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


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

serg00700

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=SPAN ATTR=TXT:Позвонить
WAIT SECONDS=1
TAG POS=1 TYPE=SPAN ATTR=TXT:8* EXTRACT=TXT


serg00700 пишет:

он вроде и был  в виде картинке

вам виднее

InfSub спасибо.
работает, но на странице собирает первым данные с цифрой 8 ( 8 объявлений, 800 (руб) и т.д.) . Как сделать что бы переходил к копированию открытой части с словом "позвонить"  ? Туда же клик происходил и вот только там нужно скопировать текст.
Прилагаю ссылки с 800 и 8 объявлений

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


ссылки публикуются в тегах noindex под спойлером
или как прописать что бы кипировало данные только с заданной длиной, форматом 8 9ХХ ХХХ-ХХ-ХХ ?

InfSub

serg00700

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=SPAN ATTR=TXT:Позвонить
WAIT SECONDS=1
TAG POS=1 TYPE=SPAN ATTR=CLASS:*phone-number EXTRACT=TXT

Уважаемые!Подскажите!
Гетом получаю ссылку на файл,но как ее закачать(сохранить) на диск чой-то догнать не могу.

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


ссылки на сторонние ресурсы, даются в тегах noindex под спойлером
замечание

Спасибо Nagibake


InfSub

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

скрытый текст

Выделить код

Код:

body>
<div id="tp">
<div class="row info black-text valign-wrapper">
<div class="col s4 hide-on-med-and-down">
<div class="col s4 center">
<b>
<span id="tmr" class="green-text center left" style="outline: 1px solid blue;">
<a id="4" class="res" href="#">
<a id="46" class="res" href="#">
<a id="4" class="res" href="#">
<a id="87" class="res" href="#">
</span>

udalov

скрытый текст

Выделить код

Код:

iimPlayCode('tag pos=1 type=span attr=Id:tmr extract=htm';
var result=iimGetLastExtract().match(/id="(\d+)"/);


скорее всего придется еще почистить результирующий массив от id=" и "

Ребята! В общем беда случилась. Написал скрипт на JS - все работает, но иногда при длительном фарме вылазит ошибка с табличкой у Firefox....
A script on this page may be busy, or it may have stopped responding. You can stop the script now, open the script in the debugger, or let the script continue.
Помогите пожалуйста решить)

удалено, п.п. 2.9
какое отношение имеет ваш вопрос к процитированному тексту?

Подскажите пожалуйста как сделать чтобы В iMacros нажрались Ctrl+V
это нужно для того чтобы ссылка вставлялась быстрее от того что ссылка вставляется как текст она не появляется вернее не появляется его картинка ВКонтакте

InfSub

СУПЕР КОТ пишет:

Подскажите пожалуйста как сделать чтобы В iMacros нажимались Ctrl+V

В FAQ есть примеры нажатия кнопок. Ссылки на ФАК вверху страницы.

Пытаюсь попарно сравнить между собой данные, чтобы найти одинаковые. Однако, срабатывает сразу первое сравнение с выдачей первого же алерта. Если вместо = в сравнении ставлю < или > , то всё работает. Получается, в таком формате, как у меня, сравнивать нельзя? А в каком можно?

скрытый текст

Выделить код

Код:

result1 = 21
result2 = 27
result3 = 19
result4 = 27

if (result1=result2){
alert("1 и 2");
    }else if (result1=result3){
    alert("1 и 3");
    }else if (result1=result4){
    alert("1 и 4");
    }else if (result2=result3){
    alert("2 и 3");
    }else if (result2=result4){
    alert("2 и 4");
}else{
alert("3 и 4");}


Сейчас появилась мысль вычитать одно число из другого попарно. Если результат =0, данные одинковые, если < или > то разные.
Неужели нет способа проще?


Всё нашёл, надо  = = ставить в сравнении))

udalov пишет:

Всё нашёл, надо  = = ставить в сравнении))

А еще применяется и такое === (оператор строгого равенства) это если сравнивать без преобразования типов,
сравнивать как есть, а такое == преобразовывает типы к одному виду.

СУПЕР КОТ
Запись -> Record options -> Experimental event recording mode

Здравствуйте!
Не могу никак домыслить, как прописать скрипт, подскажите пожалуйста.
if – else только начал осваивать.

Нужен скролинг результатов до последнего вниз.
При каждом скролинге в DOM появляются блоки:

скрытый текст

Выделить код

Код:

<div id="fbBrowseScrollingPagerContainer0"
<div id="fbBrowseScrollingPagerContainer1"
<div id="fbBrowseScrollingPagerContainer2"
<div id="fbBrowseScrollingPagerContainer3"


Когда доходит до конца поиска, в последнем блоке появляется:
скрытый текст

Выделить код

Код:

<div class="phm _64f">End of Results</div>


код публикуется в тегах code под спойлером
Скрин DOM
скрытый текст
http://s018.radikal.ru/i508/1711/01/b484e8588697.png

Подскажите какой прописать код, что бы скрипт останавливался, когда доходит до конца списка поиска?

И сразу второй вопрос, есть ли возможность как-то оповестить, когда скрипт останавливаться. Например, дошел до конца страницы поиска, остановился, и оповестил о завершении.

Спасибо!


InfSub

Alladin пишет:

Подскажите какой прописать код, что бы скрипт останавливался, когда доходит до конца списка поиска?

как-то так:

скрытый текст

Выделить код

Код:

for(let i = 1; ; i++){
    iimPlayCode( 'tag pos='+i+' type=div attr=id:fbBrowseScrollingPagerContainer* extract=txt' );
    if( ~iimGetLastExtract().indexOf( 'End of Results' ) ){ break; };
};


Alladin пишет:

есть ли возможность как-то оповестить, когда скрипт останавливаться

все зависит от вашей фантазии, начиная от открытия флеш плеера со звуковым файлом, заканчивая запуском программы (см. FAQ), например аудиоплеера

Alladin
если уверены что раньше на странице нету этого селектора

скрытый текст

Выделить код

Код:

<div class="phm _64f">End of Results</div>


то оповещение можно сделать так:
скрытый текст

Выделить код

Код:

if (window.document.querySelector('div[class="phm _64f"]')) {
    iimPlayCode('TAB OPEN\nTAB T=2\nURL GOTO=about:blank');
    window.document.querySelector('body').innerHTML = '<audio src="http://ahandfulof.me/fail/zvuk-prujiny-v2.mp3" autoplay></audio>';
    iimPlayCode('WAIT SECONDS=5');
    window.close();
};

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

InfSub

Не срабатывает команда SET !TIMEOUT_STEP 20

Код управляющего скрипта

скрытый текст

Выделить код

Код:

for (a=1;a<=10;a++){
iimPlay("D:\\iMacros\\test\\test1.iim")
for (;;){
    if (iimPlayCode('TAG POS=1 TYPE=SPAN ATTR=TXT:Комментарий<SP>успешно*')>0){ 
      iimPlay("D:\\iMacros\\ test\\test3.iim ")
      break
    }
else
{
iimPlay("D:\\iMacros\\ test\\test2.iim ",60)
}

{
iimDisplay('Закончили циклы, прошли строк: '+ (a-1))
} 
}

}


Код test2.iim

скрытый текст

Выделить код

Код:

ONDOWNLOAD FOLDER=C:\CAPCHA FILE=captcha.jpg
TAG POS=1 TYPE=IMG ATTR=SRC:http://*/secure/?k=* CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT
'PAUSE
TAB OPEN
TAB T=2
URL GOTO=file:///D:/%D0%9C%D0%BE%D0%B8%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B/Desktop/imacros.html
TAG POS=1 TYPE=INPUT:FILE FORM=ACTION:http://127.0.0.1/in.php ATTR=NAME:file CONTENT=C:\CAPCHA\captcha.jpg
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:http://127.0.0.1/in.php ATTR=*
'Команда ожидания появления текста ответа на капчу 1 ответ до 16 сек далее от 8 сек
SET !TIMEOUT_STEP 20
TAG POS=1 TYPE=SPAN ATTR=TXT:* EXTRACT=TXT
SET !VAR1 {{!EXTRACT}}
SET !EXTRACT NULL
TAB CLOSE
TAB T=1
'TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:addform ATTR=NAME:code CONTENT={{!VAR1}}
'Посимволный ввод полученного ответа на капчу 
EVENT TYPE=CLICK SELECTOR="#fCode" BUTTON=0
EVENTS TYPE=KEYPRESS SELECTOR="#fCode" CHARS={{!VAR1}}
'Во время паузы проверить правильность введенной капчи
PAUSE
'TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:NoFormName ATTR=*
'Отправка формы эмуляцией нажатия ENTER
'EVENT TYPE=KEYPRESS SELECTOR="#fCode" KEY=13
'TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:addform ATTR=NAME:submit
EVENT TYPE=CLICK SELECTOR="#addcBut" BUTTON=0
PAUSE
'TAB T=2
'SET !TIMEOUT_STEP 20
'TAG POS=1 TYPE=SPAN ATTR=TXT:Комментарий<SP>успешно*
'PAUSE


Не дождался ответа решение такое надо добавить команду в test2

скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES

Alladin
что показывает

скрытый текст

Выделить код

Код:

var a = window.document.querySelectorAll('div[id^="fbBrowseScrollingPagerContainer"]').length;
alert(a);

karginaolga
удалено, избыточное цитирование
Без прокрутки - 1, прокручиваю вниз - то кол-во, которое подгрузилось 2,3,4,5....

InfSub

Alladin
а вот так скроллит? попробуйте в цикл запихнуть, меняйте цифру

скрытый текст

Выделить код

Код:

window.document.querySelectorAll('div[id^="fbBrowseScrollingPagerContainer"]')[1].scrollIntoView();


или так:
скрытый текст

Выделить код

Код:

window.scrollBy(0,1000);

karginaolga

я совсем зеленый еще в циклах.
вот сделал, но похоже не верно:(

скрытый текст

Выделить код

Код:

for(let i = 1; ; i++){
    iimPlayCode( 'tag pos='+i+' type=div attr=id:fbBrowseScrollingPagerContainer* extract=txt' );
    window.document.querySelectorAll('div[id^="fbBrowseScrollingPagerContainer"]')[1].scrollIntoView();
    if( ~iimGetLastExtract().indexOf( 'End of Results' ) ){ break; };
};


Он не скролит вниз, а соотвественно не подгружаются и не появляются: fbBrowseScrollingPagerContainer
Задача в том, что бы скролил вниз пока в одном из fbBrowseScrollingPagerContainer не появляется End of Results
скрытый текст
http://s018.radikal.ru/i508/1711/01/b484e8588697.png

Форумчане!

Возможно ли запросом получить request url?
[img]http://s018.radikal.ru/i504/1711/7f/77e1a1602a8d.jpg[/img]

При изменении юзер-агента меняется строка "ua/chrome,ua/chrome52,os/nt,os/nt10.0,fwv/PnPOiQ.bayb72",хотелось бы ее получать.
Или может есть способ расшифровки этой записи в соответствии с юзерагентом.В принципе основное понятно,кроме "PnPOiQ.bayb72"

здравствуйте.

код

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=A ATTR=CLASS:data EXTRACT=HTM'); data=iimGetLastExtract().replace(/\D+/g,"");
alert(data); //1140921801051800818205200040183200807200402183185200040800000021818520080000011448


код публикуется в тегах code под спойлером
подскажите, как сделать так, чтобы от всей кучи цифр в переменой data осталось только первые две цифры, т.е. 14?

InfSub

Flanker
.match(/[\d]{2}/);

Flanker

скрытый текст

Выделить код

Код:

..
alert(data.match(/\d{2}/).pop());

BadParameter: The URL syntax is not correct:

скрытый текст

Выделить код

Код:

iimPlayCode("URL GOTO=view-source:https://yandex.ru/'");


Не пойму. как поправить можно?

darkzp
зачем там одинарная кавычка?

12-11-2017 14:31:01
а вообще параметр view-source в URL GOTO работать не будет

А не подскажешь как быть
через js есть варианты?

darkzp
так а что собственно требуется?

darkzp

скрытый текст

Выделить код

Код:

window.document.location.href = "view-source:https://yandex.ru/";

для начала я хочу перейти по этой ссылке
в дальнейшем написать парсер на этой стр.

12-11-2017 14:41:16
karginaolga
Спасибо.

Всем привет!
Есть такой код:

скрытый текст

Выделить код

Код:

for (i = 6; i < 349; i++)
{
var macroobsh;
macroobsh = "CODE:";
macroobsh += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroobsh += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroobsh += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroobsh += "URL GOTO={{!COL1}}" + "\n"; 
macroobsh += "WAIT SECONDS=2" + "\n"; 
macroobsh += "TAG POS=1 TYPE=SPAN ATTR=TXT:Коммунальные<SP>услуги" + "\n"; 
macroobsh += "WAIT SECONDS=1" + "\n"; 
var macroobsh1;
macroobsh1 = "CODE:";
macroobsh1 += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroobsh1 += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroobsh1 += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные 
macroobsh1 += "SET !EXTRACT NULL" + "\n";
macroobsh1 += "SET !EXTRACT {{!COL26}}" + "\n";
var macroobsh2;
macroobsh2 = "CODE:";
macroobsh2 += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroobsh2 += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroobsh2 += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные 
macroobsh2 += "SET !EXTRACT NULL" + "\n";
macroobsh2 += "SET !EXTRACT {{!COL48}}" + "\n";
var macroobsh3;
macroobsh3 = "CODE:";
macroobsh3 += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroobsh3 += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroobsh3 += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные 
macroobsh3 += "SET !EXTRACT NULL" + "\n";
macroobsh3 += "SET !EXTRACT {{!COL72}}" + "\n";
var macroobsh4;
macroobsh4 = "CODE:";
macroobsh4 += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroobsh4 += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroobsh4 += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные 
macroobsh4 += "SET !EXTRACT NULL" + "\n";
macroobsh4 += "SET !EXTRACT {{!COL96}}" + "\n";
var macroobsh5;
macroobsh5 = "CODE:";
macroobsh5 += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroobsh5 += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroobsh5 += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные 
macroobsh5 += "SET !EXTRACT NULL" + "\n";
macroobsh5 += "SET !EXTRACT {{!COL120}}" + "\n";
var macroobsh6;
macroobsh6 = "CODE:";
macroobsh6 += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroobsh6 += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(2)>DIV>DIV>DIV:nth-of-type(2)>DIV>A:nth-of-type(2)>SPAN:nth-of-type(2)\" BUTTON=0" + "\n"; 
macroelectro += "WAIT SECONDS=1" + "\n";
var macroelectro;
macroelectro = "CODE:";
macroelectro += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroelectro += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroelectro += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroelectro += "TAG POS=1 TYPE=DIV ATTR=TXT:Электроснабжение" + "\n"; 
macroelectro += "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n";
macroelectro += "WAIT SECONDS=1" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[fillingFact] CONTENT=\"{{!COL26}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[serviceMethod] CONTENT=\"{{!COL27}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[tariffDescription] CONTENT=\"{{!COL28}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerInn] CONTENT=\"{{!COL30}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerName] CONTENT=\"{{!COL31}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerAddInfo] CONTENT=\"{{!COL32}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractNumber] CONTENT=\"б\/н\"" + "\n";
macroelectro += "TAG POS=3 TYPE=SPAN ATTR=TXT:Добавить" + "\n"; 
macroelectro += "WAIT SECONDS=0.5" + "\n";
var filtr;
var macroelectro1;
macroelectro1 = "CODE:";
macroelectro1 += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroelectro1 += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroelectro1 += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroelectro1 += "EVENT TYPE=CLICK SELECTOR=\"#"+filtr+"\" BUTTON=0" + "\n";

var macrootoplen;
macrootoplen = "CODE:";
macrootoplen += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macrootoplen += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macrootoplen += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macrootoplen += "TAG POS=1 TYPE=DIV ATTR=TXT:Отопление" + "\n"; 
macrootoplen += "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n";
macrootoplen += "WAIT SECONDS=1" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[fillingFact] CONTENT=\"{{!COL48}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[serviceMethod] CONTENT=\"{{!COL49}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[tariffDescription] CONTENT=\"{{!COL50}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerInn] CONTENT=\"{{!COL52}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerName] CONTENT=\"{{!COL53}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerAddInfo] CONTENT=\"{{!COL54}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractNumber] CONTENT=\"{{!COL55}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractDate] CONTENT=\"{{!COL56}}\"" + "\n";
macrootoplen += "TAG POS=3 TYPE=SPAN ATTR=TXT:Добавить" + "\n"; 
macrootoplen += "WAIT SECONDS=0.5" + "\n";
macrootoplen += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(3)>DIV>DIV>DIV>DIV>SPAN\" BUTTON=0" + "\n"; 
macrootoplen += "WAIT SECONDS=0.5" + "\n";
macrootoplen += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD>DIV\" BUTTON=0" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:tariffStartedDate CONTENT=\"{{!COL57}}\"" + "\n";
macrootoplen += "WAIT SECONDS=0.2" + "\n";
macrootoplen += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(3)>DIV\" BUTTON=0" + "\n";
macrootoplen += "WAIT SECONDS=0.2" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:tariff CONTENT=\"{{!COL59}}\"" + "\n";
macrootoplen += "WAIT SECONDS=0.2" + "\n";
macrootoplen += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(2)>DIV\" BUTTON=0" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:unitOfMeasurement CONTENT=\"{{!COL58}}\"" + "\n";
macrootoplen += "WAIT SECONDS=0.2" + "\n";
macrootoplen += "TAG POS=3 TYPE=SPAN ATTR=TXT:НПА<SP>и<SP>нормативы" + "\n"; 
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffNumber] CONTENT=\"{{!COL60}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffDate] CONTENT=\"{{!COL61}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffOrgName] CONTENT=\"{{!COL62}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNorm] CONTENT=\"{{!COL63}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormUnitOfMeasurement] CONTENT=\"{{!COL64}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[consumptionNormAddInfo] CONTENT=\"{{!COL65}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormOnCommonNeeds] CONTENT=\"{{!COL66}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormOnCommonNeedsUnitOfMeasurement] CONTENT=\"{{!COL67}}\"" + "\n";
macrootoplen += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[consumptionNormOnCommonNeedsAddInfo] CONTENT=\"{{!COL68}}\"" + "\n";
macrootoplen += "TAG POS=4 TYPE=SPAN ATTR=TXT:Добавить" + "\n";
macrootoplen += "WAIT SECONDS=0.5" + "\n";
macrootoplen += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(3)>DIV>DIV>DIV>DIV>SPAN\" BUTTON=0" + "\n";
macrootoplen += "WAIT SECONDS=0.5" + "\n";
macrootoplen += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD>DIV\" BUTTON=0" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentDate CONTENT=\"{{!COL70}}\"" + "\n";
macrootoplen += "WAIT SECONDS=0.2" + "\n";
macrootoplen += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(2)>DIV\" BUTTON=0" + "\n";
macrootoplen += "WAIT SECONDS=0.1" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentNumber CONTENT=\"{{!COL69}}\"" + "\n";
macrootoplen += "WAIT SECONDS=0.2" + "\n";
macrootoplen += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(3)>DIV\" BUTTON=0" + "\n";
macrootoplen += "WAIT SECONDS=0.1" + "\n";
macrootoplen += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentOrgName CONTENT=\"{{!COL71}}\"" + "\n";
macrootoplen += "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macrootoplen += "WAIT SECONDS=1" + "\n"; 
macrootoplen += "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
var macrogvs;
macrogvs = "CODE:";
macrogvs += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macrogvs += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macrogvs += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macrogvs += "TAG POS=1 TYPE=DIV ATTR=TXT:Горячее<SP>водоснабжение" + "\n"; 
macrogvs += "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n";
macrogvs += "WAIT SECONDS=1" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[fillingFact] CONTENT=\"{{!COL72}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[serviceMethod] CONTENT=\"{{!COL73}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[tariffDescription] CONTENT=\"{{!COL74}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerInn] CONTENT=\"{{!COL76}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerName] CONTENT=\"{{!COL77}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerAddInfo] CONTENT=\"{{!COL78}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractNumber] CONTENT=\"{{!COL79}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractDate] CONTENT=\"{{!COL80}}\"" + "\n";
macrogvs += "TAG POS=3 TYPE=SPAN ATTR=TXT:Добавить" + "\n"; 
macrogvs += "WAIT SECONDS=0.5" + "\n";
macrogvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(3)>DIV>DIV>DIV>DIV>SPAN\" BUTTON=0" + "\n"; 
macrogvs += "WAIT SECONDS=0.5" + "\n";
macrogvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD>DIV\" BUTTON=0" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:tariffStartedDate CONTENT=\"{{!COL81}}\"" + "\n";
macrogvs += "WAIT SECONDS=0.2" + "\n";
macrogvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(3)>DIV\" BUTTON=0" + "\n";
macrogvs += "WAIT SECONDS=0.2" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:tariff CONTENT=\"{{!COL83}}\"" + "\n";
macrogvs += "WAIT SECONDS=0.2" + "\n";
macrogvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(2)>DIV\" BUTTON=0" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:unitOfMeasurement CONTENT=\"{{!COL82}}\"" + "\n";
macrogvs += "WAIT SECONDS=0.2" + "\n";
macrogvs += "TAG POS=3 TYPE=SPAN ATTR=TXT:НПА<SP>и<SP>нормативы" + "\n"; 
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffNumber] CONTENT=\"{{!COL84}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffDate] CONTENT=\"{{!COL85}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffOrgName] CONTENT=\"{{!COL86}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNorm] CONTENT=\"{{!COL87}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormUnitOfMeasurement] CONTENT=\"{{!COL88}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[consumptionNormAddInfo] CONTENT=\"{{!COL89}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormOnCommonNeeds] CONTENT=\"{{!COL90}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormOnCommonNeedsUnitOfMeasurement] CONTENT=\"{{!COL91}}\"" + "\n";
macrogvs += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[consumptionNormOnCommonNeedsAddInfo] CONTENT=\"{{!COL92}}\"" + "\n";
macrogvs += "TAG POS=4 TYPE=SPAN ATTR=TXT:Добавить" + "\n";
macrogvs += "WAIT SECONDS=0.5" + "\n";
macrogvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(3)>DIV>DIV>DIV>DIV>SPAN\" BUTTON=0" + "\n";
macrogvs += "WAIT SECONDS=0.5" + "\n";
macrogvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD>DIV\" BUTTON=0" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentDate CONTENT=\"{{!COL94}}\"" + "\n";
macrogvs += "WAIT SECONDS=0.2" + "\n";
macrogvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(2)>DIV\" BUTTON=0" + "\n";
macrogvs += "WAIT SECONDS=0.1" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentNumber CONTENT=\"{{!COL93}}\"" + "\n";
macrogvs += "WAIT SECONDS=0.2" + "\n";
macrogvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(3)>DIV\" BUTTON=0" + "\n";
macrogvs += "WAIT SECONDS=0.1" + "\n";
macrogvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentOrgName CONTENT=\"{{!COL95}}\"" + "\n";
macrogvs += "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macrogvs += "WAIT SECONDS=1" + "\n"; 
macrogvs += "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
var macrohvs;
macrohvs = "CODE:";
macrohvs += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macrohvs += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macrohvs += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macrohvs += "TAG POS=1 TYPE=DIV ATTR=TXT:Холодное<SP>водоснабжение" + "\n"; 
macrohvs += "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n";
macrohvs += "WAIT SECONDS=1" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[fillingFact] CONTENT=\"{{!COL96}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[serviceMethod] CONTENT=\"{{!COL97}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[tariffDescription] CONTENT=\"{{!COL98}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerInn] CONTENT=\"{{!COL100}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerName] CONTENT=\"{{!COL101}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerAddInfo] CONTENT=\"{{!COL102}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractNumber] CONTENT=\"{{!COL103}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractDate] CONTENT=\"{{!COL104}}\"" + "\n";
macrohvs += "TAG POS=3 TYPE=SPAN ATTR=TXT:Добавить" + "\n"; 
macrohvs += "WAIT SECONDS=0.5" + "\n";
macrohvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(3)>DIV>DIV>DIV>DIV>SPAN\" BUTTON=0" + "\n"; 
macrohvs += "WAIT SECONDS=0.5" + "\n";
macrohvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD>DIV\" BUTTON=0" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:tariffStartedDate CONTENT=\"{{!COL105}}\"" + "\n";
macrohvs += "WAIT SECONDS=0.2" + "\n";
macrohvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(3)>DIV\" BUTTON=0" + "\n";
macrohvs += "WAIT SECONDS=0.2" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:tariff CONTENT=\"{{!COL107}}\"" + "\n";
macrohvs += "WAIT SECONDS=0.2" + "\n";
macrohvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(2)>DIV\" BUTTON=0" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:unitOfMeasurement CONTENT=\"{{!COL106}}\"" + "\n";
macrohvs += "WAIT SECONDS=0.2" + "\n";
macrohvs += "TAG POS=3 TYPE=SPAN ATTR=TXT:НПА<SP>и<SP>нормативы" + "\n"; 
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffNumber] CONTENT=\"{{!COL108}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffDate] CONTENT=\"{{!COL109}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffOrgName] CONTENT=\"{{!COL110}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNorm] CONTENT=\"{{!COL111}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormUnitOfMeasurement] CONTENT=\"{{!COL112}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[consumptionNormAddInfo] CONTENT=\"{{!COL113}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormOnCommonNeeds] CONTENT=\"{{!COL114}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormOnCommonNeedsUnitOfMeasurement] CONTENT=\"{{!COL115}}\"" + "\n";
macrohvs += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[consumptionNormOnCommonNeedsAddInfo] CONTENT=\"{{!COL116}}\"" + "\n";
macrohvs += "TAG POS=4 TYPE=SPAN ATTR=TXT:Добавить" + "\n";
macrohvs += "WAIT SECONDS=0.5" + "\n";
macrohvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(3)>DIV>DIV>DIV>DIV>SPAN\" BUTTON=0" + "\n";
macrohvs += "WAIT SECONDS=0.5" + "\n";
macrohvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD>DIV\" BUTTON=0" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentDate CONTENT=\"{{!COL118}}\"" + "\n";
macrohvs += "WAIT SECONDS=0.2" + "\n";
macrohvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(2)>DIV\" BUTTON=0" + "\n";
macrohvs += "WAIT SECONDS=0.1" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentNumber CONTENT=\"{{!COL117}}\"" + "\n";
macrohvs += "WAIT SECONDS=0.2" + "\n";
macrohvs += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(3)>DIV\" BUTTON=0" + "\n";
macrohvs += "WAIT SECONDS=0.1" + "\n";
macrohvs += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentOrgName CONTENT=\"{{!COL119}}\"" + "\n";
macrohvs +=   "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macrohvs +=   "WAIT SECONDS=1" + "\n"; 
macrohvs +=   "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 
var macrovodootv;
macrovodootv = "CODE:";
macrovodootv += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macrovodootv += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macrovodootv += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macrovodootv += "TAG POS=1 TYPE=DIV ATTR=TXT:Водоотведение" + "\n"; 
macrovodootv += "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n";
macrovodootv += "WAIT SECONDS=1" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[fillingFact] CONTENT=\"{{!COL120}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[serviceMethod] CONTENT=\"{{!COL121}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[tariffDescription] CONTENT=\"{{!COL122}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerInn] CONTENT=\"{{!COL124}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerName] CONTENT=\"{{!COL125}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerAddInfo] CONTENT=\"{{!COL126}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractNumber] CONTENT=\"{{!COL127}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractDate] CONTENT=\"{{!COL128}}\"" + "\n";
macrovodootv += "TAG POS=3 TYPE=SPAN ATTR=TXT:Добавить" + "\n"; 
macrovodootv += "WAIT SECONDS=0.5" + "\n";
macrovodootv += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(3)>DIV>DIV>DIV>DIV>SPAN\" BUTTON=0" + "\n"; 
macrovodootv += "WAIT SECONDS=0.5" + "\n";
macrovodootv += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD>DIV\" BUTTON=0" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:tariffStartedDate CONTENT=\"{{!COL129}}\"" + "\n";
macrovodootv += "WAIT SECONDS=0.2" + "\n";
macrovodootv += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(3)>DIV\" BUTTON=0" + "\n";
macrovodootv += "WAIT SECONDS=0.2" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:tariff CONTENT=\"{{!COL131}}\"" + "\n";
macrovodootv += "WAIT SECONDS=0.2" + "\n";
macrovodootv += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(2)>DIV\" BUTTON=0" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:unitOfMeasurement CONTENT=\"{{!COL130}}\"" + "\n";
macrovodootv += "WAIT SECONDS=0.2" + "\n";
macrovodootv += "TAG POS=3 TYPE=SPAN ATTR=TXT:НПА<SP>и<SP>нормативы" + "\n"; 
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffNumber] CONTENT=\"{{!COL132}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffDate] CONTENT=\"{{!COL133}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[legalActOfTariffOrgName] CONTENT=\"{{!COL134}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNorm] CONTENT=\"{{!COL135}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormUnitOfMeasurement] CONTENT=\"{{!COL136}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[consumptionNormAddInfo] CONTENT=\"{{!COL137}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormOnCommonNeeds] CONTENT=\"{{!COL138}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[consumptionNormOnCommonNeedsUnitOfMeasurement] CONTENT=\"{{!COL139}}\"" + "\n";
macrovodootv += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[consumptionNormOnCommonNeedsAddInfo] CONTENT=\"{{!COL140}}\"" + "\n";
macrovodootv += "TAG POS=4 TYPE=SPAN ATTR=TXT:Добавить" + "\n";
macrovodootv += "WAIT SECONDS=0.5" + "\n";
macrovodootv += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(3)>DIV>DIV>DIV>DIV>SPAN\" BUTTON=0" + "\n";
macrovodootv += "WAIT SECONDS=0.5" + "\n";
macrovodootv += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD>DIV\" BUTTON=0" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentDate CONTENT=\"{{!COL142}}\"" + "\n";
macrovodootv += "WAIT SECONDS=0.2" + "\n";
macrovodootv += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(2)>DIV\" BUTTON=0" + "\n";
macrovodootv += "WAIT SECONDS=0.1" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentNumber CONTENT=\"{{!COL141}}\"" + "\n";
macrovodootv += "WAIT SECONDS=0.2" + "\n";
macrovodootv += "EVENT TYPE=CLICK SELECTOR=\"HTML>BODY>DIV:nth-of-type(14)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>SPAN>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>SPAN>DIV>DIV>DIV:nth-of-type(4)>DIV>TABLE>TBODY>TR>TD:nth-of-type(3)>DIV\" BUTTON=0" + "\n";
macrovodootv += "WAIT SECONDS=0.1" + "\n";
macrovodootv += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:documentOrgName CONTENT=\"{{!COL143}}\"" + "\n";
macrovodootv +=   "TAG POS=2 TYPE=A ATTR=TXT:Сохранить" + "\n"; 
macrovodootv +=   "WAIT SECONDS=1" + "\n"; 
macrovodootv +=   "TAG POS=1 TYPE=A ATTR=TXT:OK" + "\n"; 

iimPlay(macroobsh);
iimPlay(macroobsh1);
var electro = iimGetExtract();
if (electro = "Предоставляется"){
iimPlay(macroelectro);
var element = document.querySelectorAll('div[class="x-column-header x-column-header-align-center x-box-item x-column-header-default x-unselectable x-column-header-first"]');
filtr  = element[element.length-1].getAttribute('id');
iimPlay(macroelectro1);       
}
iimPlay(macroobsh2);
var otoplen = iimGetExtract();
if (otoplen = "Предоставляется"){
iimPlay(macrootoplen);
}
iimPlay(macroobsh3);
var gvs = iimGetExtract();
if (gvs = "Предоставляется"){
iimPlay(macrogvs);
}
iimPlay(macroobsh4);
var hvs = iimGetExtract();
if (hvs = "Предоставляется"){
iimPlay(macrohvs);
}
iimPlay(macroobsh5);
var vodootv = iimGetExtract();
if (vodootv = "Предоставляется"){
iimPlay(macrovodootv);
}
iimPlay(macroobsh6);
}


Но macroelectro1 не отрабатывает. Подскажите пожалуйста, как поправить, чтобы работало? Пробовала вариант с window.onload - тогда не проигрывается код вообще.

Aikyaira пишет:

VERSION BUILD=9030808

для начала смените версию iMacros на 8.9.7 и запретите обновление

13-11-2017 11:59:01

Aikyaira пишет:

скрытый текст

Выделить код

Код:

var filtr;
var macroelectro1;
macroelectro1 = "CODE:";
macroelectro1 += "VERSION BUILD=9030808 RECORDER=FX" + "\n"; 
macroelectro1 += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroelectro1 += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroelectro1 += "EVENT TYPE=CLICK SELECTOR=\"#"+filtr+"\" BUTTON=0" + "\n";


а собственно что тут должно работать, если вы объявили пустую переменную var filtr; и после этого вызываете ее в коде, не передав значение?

13-11-2017 12:00:59
и прекращайте объявлять переменные внутри цикла, учитесь нормально писать код

InfSub пишет:

вы объявили пустую переменную var filtr;

Объявила пустую переменную. а этим кодом присваиваю ей значение

скрытый текст

Выделить код

Код:

var element = document.querySelectorAll('div[class="x-column-header x-column-header-align-center x-box-item x-column-header-default x-unselectable x-column-header-first"]');
filtr  = element[element.length-1].getAttribute('id');


Что такого в объявлении переменных внутри цикла?

Aikyaira

скрытый текст

Выделить код

Код:

if (electro = "Предоставляется")


здесь у вас нету сравнения, ошибка

karginaolga Сравнение есть, так как в csv есть такая ячейка. А сравниваю я с Extract'ом. Или вы имеете ввиду неверный оператор сравнения? Если да-то поправила

Aikyaira
не умничайте, если просите помощи, прочитайте 13 страницу этой ветки

karginaolga
Я и не умничала, просто не поняла, о чем идет речь

13-11-2017 12:41:45

karginaolga пишет:

а это называется открыть дверь без ключа

Вы имеете ввиду то, что window.onload = function() отсутствует? С ним вообще пропускается macroelectro и macroelectro1. Вот поэтому и спрашиваю, чем можно эту конструкцию заменить, чтобы работало
В таком виде пропускается macroelectro1

скрытый текст

Выделить код

Код:

var macroobsh;
var macroobsh1;
var macroelectro;
var filtr;
var macroelectro1;
for (i = 6; i < 349; i++)
{
macroobsh = "CODE:";
macroobsh += "VERSION BUILD=8970419 RECORDER=FX" + "\n"; 
macroobsh += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroobsh += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroobsh += "URL GOTO={{!COL1}}" + "\n"; 
macroobsh += "WAIT SECONDS=2" + "\n"; 
macroobsh += "TAG POS=1 TYPE=SPAN ATTR=TXT:Коммунальные<SP>услуги" + "\n"; 
macroobsh += "WAIT SECONDS=1" + "\n"; 

macroobsh1 = "CODE:";
macroobsh1 += "VERSION BUILD=8970419 RECORDER=FX" + "\n"; 
macroobsh1 += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroobsh1 += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные 
macroobsh1 += "SET !EXTRACT NULL" + "\n";
macroobsh1 += "SET !EXTRACT {{!COL26}}" + "\n";

macroelectro = "CODE:";
macroelectro += "VERSION BUILD=8970419 RECORDER=FX" + "\n"; 
macroelectro += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroelectro += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroelectro += "TAG POS=1 TYPE=DIV ATTR=TXT:Электроснабжение" + "\n"; 
macroelectro += "TAG POS=r1 TYPE=A ATTR=TXT:Открыть" + "\n";
macroelectro += "WAIT SECONDS=1" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[fillingFact] CONTENT=\"{{!COL26}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[serviceMethod] CONTENT=\"{{!COL27}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=TEXTAREA ATTR=NAME:communalService[tariffDescription] CONTENT=\"{{!COL28}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerInn] CONTENT=\"{{!COL30}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerName] CONTENT=\"{{!COL31}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[providerAddInfo] CONTENT=\"{{!COL32}}\"" + "\n";
macroelectro += "TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:communalService[supplyContractNumber] CONTENT=\"б\/н\"" + "\n";
macroelectro += "TAG POS=3 TYPE=SPAN ATTR=TXT:Добавить" + "\n"; 
macroelectro += "WAIT SECONDS=0.5" + "\n";

macroelectro1 = "CODE:";
macroelectro1 += "VERSION BUILD=8970419 RECORDER=FX" + "\n"; 
macroelectro1 += "SET !DATASOURCE reformatarifi.csv" + "\n"; 
macroelectro1 += "SET !DATASOURCE_LINE "+i+ "\n";// из какой по счету строки брать данные
macroelectro1 += "EVENT TYPE=CLICK SELECTOR=\"#"+filtr+"\" BUTTON=0" + "\n";



iimPlay(macroobsh);
iimPlay(macroobsh1);
var electro = iimGetExtract();
if (electro == "Предоставляется"){

iimPlay(macroelectro);
window.onload = function(){ 
var element = document.querySelectorAll('div[class="x-column-header x-column-header-align-center x-box-item x-column-header-default x-unselectable x-column-header-first"]');
filtr  = element[element.length-1].getAttribute('id');
iimPlay(macroelectro1);  }     
}

}

Aikyaira
так не будет работать

скрытый текст

Выделить код

Код:

var element = document.querySelectorAll


надо так
скрытый текст

Выделить код

Код:

var element = window.document.querySelectorAll


но чтобы работал window нужно сменить версию iMacros на 8.9.7

karginaolga
Уже сменила. Спасибо, работает

Aikyaira пишет:

Объявила пустую переменную. а этим кодом присваиваю ей значение

вы объявили переменные filtr и macroelectro1
после чего присвоили значениеvar macroelectro1
при присвоении у вас (в первом цикле) значение переменной filtr равно undefined так как описанное вами:

скрытый текст

Выделить код

Код:

var element = document.querySelectorAll('div[class="x-column-header x-column-header-align-center x-box-item x-column-header-default x-unselectable x-column-header-first"]');
filtr  = element[element.length-1].getAttribute('id');


выполниться только в конце первого цикла, когда значение macroelectro1 уже присвоено

13-11-2017 13:12:02
.. при этом во втором и последующих циклах - значение filtr, попадающее в переменную macroelectro1 будет равно тому значению, которое было получено в предыдущем проходе цикла

InfSub
Спасибо за подсказку! Поняла, исправлю.

А что, начиная с Firefox 57 уже не будет дополнения iMacros?  Или будет нечто подобное как для хрома без поддержки  JavaScript?
У меня после обновления мазилка стала firefox quantum) на хром похожа и половина дополнений не доступно.

подскажите разобраться, не могу понять где именно пропустил ";"

пишет

SyntaxError: missing ; before statement, line 6 (Error code: -991)

скрытый текст

Выделить код

Код:

macros += 'SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")'+ n;


скрытый текст

Выделить код

Код:

var n = '\n';
var macros = '';
macros += 'TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+ n;
macros += 'TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'+ n;
macros += 'SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")'+ n;
macros += 'SET !EXTRACT NULL'+ n;
macros += 'ADD !EXTRACT {{!VAR1}}'+ n;

macros += 'SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1")'+ n;
macros += 'TAG POS={{!LOOP}} TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+ n;
macros += 'TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+ n;
macros += 'SAVEAS TYPE=EXTRACT FOLDER=* FILE=test.txt'+ n;

iimPlayCode(macros);

Я в imacrose копировала текст с другого сайта, на сайте текст все время меняется, когда я запустила еще раз имакрос то текст копировался тот чтобы был при записовании имакроса а не тот что сейчас на сайте. Как сделать чтобы имакрос копировал новый текст?

irinajanas
Код записанного скрипта в студию! А лучше только то место где проблема.

Alladin пишет:

скрытый текст

Выделить код

Код:

macros += 'SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")'+ n;


Попробуйте так:

скрытый текст

Выделить код

Код:

macros += 'SET !VAR1 EVAL("\'{{!EXTRACT}}\'.match(/(.*?)\\s·\\s\\d+/).pop()")'+ n;

googlenoob пишет:

Код записанного скрипта в студию! А лучше только то место где проблема.

удалено, избыточное цитирование

скрытый текст

Выделить код

Код:

VERSION BUILD=8970419 RECORDER=FX
SET !ERRORIGNORE YES

TAG POS=1 TYPE=TEXTAREA FORM=NAME:taskreportform ATTR=NAME:ask_reply CONTENT=http://awangarda.ru/fotografii-lic-zhenshhin-do-vo-vremya-i-posle-orgazma/<BR>http://awangarda.ru/25-chestnyx-illyustracij-o-materinskoj-zhizni/<BR>http://awangarda.ru/20-razlichnyx-sposobov-podachi-kofe-vo-vsem-mire/<BR>http://awangarda.ru/fotografii-ryzhevolosyx-devushek-so-vsego-mira/<BR>http://awangarda.ru/umoritelnye-foto-zhivotnyx/<SP>


код публикуется в тегах code под спойлером


Я так поняла он просто раз записывает сюда значение и больше не меняет, все время его вставляет, а как мне сделать чтобы он копировал текст с сайт текст который там ( он там все время менятся )
Делала через запись, скопировала это с сайта. Когда запускаю скрипт он не копирует а просто берет значение которое было при записи

InfSub

Aikyaira
Благодарю, работает:)

ссылки на сторонние сайты публикуются в тегах noindex под спойлером
код публикуется в тегах code под спойлером
удалено, дубликат сообщения, п.п. 2.8

замечание


InfSub

karginaolga
удалено, избыточное цитирование
Спасибо, работает!)


InfSub

Подскажите, пожалуйста, как проверить наличие элемента внутри другого элемента? Делаю так, но не работает iimPlay(ots), а элемент на странице в количестве одной штуки есть:

скрытый текст

Выделить код

Код:

var filtr1;
var filtr2;
var filtr3;
var element1 = window.document.querySelectorAll('div[class="x-grid-view x-fit-item x-grid-view-default"]');
filtr1  = element1[1].getAttribute('id');
var netdannix = window.document.querySelectorAll('#' + filtr1 + '>div')
if(netdannix.length == 1){
iimPlay(ots); 
}
var element2 = window.document.querySelectorAll('#' + filtr1 + '-body>tr');
filtr2  = element2[0].getAttribute('id');
var element3 = window.document.querySelectorAll('#' + filtr2 + '>td');
filtr3  = element3[0].getAttribute('id');
var macrovodootv2; 
macrovodootv2 = "CODE:";

Уважаемые! Каким образом взять куки с помощью запроса, для следующего запроса?
Через браузер понятно! Можно сохранить,далее уже подставлять.
Но вот как запросом делать?

скрытый текст
http://s018.radikal.ru/i502/1711/de/d47114fb13b3.jpg

этой командой получаю не то что надо

Выделить код

Код:

var headers = x.getAllResponseHeaders()//.toLowerCase();
alert(headers);

Помогите пожалуста подкорректировать код, не могу додумать где ошибка закралась.
При сохранении в txt, сохраняет по 2 раза ссылки, а если еще и какой-то из моих друзей подписаны на эту страницу, то сохраняет ссылки на их профили, вместо того, что бы сохранить ссылку на данную страницу, так как в результатах поиска отражается что как-то мой друг подписан на эту страницу тоже.
Как указать, что бы бралась и сохранялась ссылка только из div class="_52eh _ajx" в цикле.

скрытый текст

Выделить код

Код:

for(let i = 0; ; i++){
var n = '\n';
var macros = '';
macros += 'SET !REPLAYSPEED FAST'+ n;
macros += 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+ n;
macros += 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'+ n;
macros += 'SET !VAR1 EVAL("\'{{!EXTRACT}}\'.match(/(.*?)\\s·\\s\\d+/).pop()")'+ n;
macros += 'SET !EXTRACT NULL'+ n;
macros += 'ADD !EXTRACT {{!VAR1}}'+ n;

macros += 'SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1")'+ n;
macros += 'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+ n;
macros += 'TAG POS='+i+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+ n;
macros += 'SAVEAS TYPE=EXTRACT FOLDER=* FILE=test.txt'+ n;
macros += 'FILTER TYPE=IMAGES STATUS=ON'+ n;
macros += 'URL GOTO="javascript:window.scrollTo(0,(content.document.documentElement.scrollHeight)); void(0);"' + n;
iimPlayCode(macros);


скрытый текст
http://s41.radikal.ru/i091/1711/de/db347eafe95d.png

Мне легче сохранять, а потом извлекать какую то информацию в нескольких файлах. К примеру, 10 почт соответственно 10 разных паролей к ним разделены на два файла MAIL и PASS и ни каких проблем не будет при извлечении по порядку в цикле обычном, но и на js не проблема зациклить. Как и у Вас записаны в столбик по порядку и берутся также мыло с первой строки и пас тоже с первой, но с другого файла.

googlenoob
У меня сохраняются в фаил название групп и ссылки на них из результата поиска. Для дальнейшей работы с ними.
А вы что имели ввиду? В смысле "легче сохранять"?

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=DIV FORM=NAME:taskreportform ATTR=ID:nazv3 EXTRACT=TXT

TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:taskselectform ATTR=NAME:tasknum CONTENT={{!EXTRACT}}


код публикуется в тегах code под спойлером

С помощу этих команд я копирую и вставляю текст
но тут какае то проблема.
есть текст 123, макрос его скопировал вставил все как надо
а когда я еще раз скопирую на пример 456, то он вставит 123456, а мне надо 456
как это исправить?

InfSub

irinajanas
читать FAQ или wiki не пробовали? говорят, помогает.
после вставки данных из {{!extract}} очистите переменную командой:

скрытый текст

Выделить код

Код:

SET !EXTRACT NULL

прожорливость imacrosa можно как-то регулировать ??? банальное зайти на страницу и нажать кнопку в цикле после 50 уже больше гига озу высасывает и постоянно растет пока не упрется в потолок или не закончится работа макроса, при 200 мб при старте. Часто после 50 начинает тупить, может даже повиснуть из за нехватки озу, я то думал вначале что это сервер шалит.

Можно, там в about:config на оперативку около 15-20 настроек, я себе до 150 снизил МБ потребление.

FastSpeed пишет:

about:config

именно по imacrosy там настроек для памяти нет, только самого браузера

stanny
Так про настройки браузера вам и говорят

InfSub
я спрашивал именно по imacrosy

stanny
а браузер можно убить и одной строчкой, все зависит от вашего кода
пример:

скрытый текст

Выделить код

Код:

        var str_one = 1;
        out: for (;;) {
            //iimPlayCode('WAIT SECONDS=0.6');
            var str_two = 1;
            if (str_one != str_two) break out;
        };


браузер зависнит, если раскомментировать ожидание будет работать

karginaolga пишет:

а браузер можно убить и одной строчкой, все зависит от вашего кода

дело не в коде, попробуйте запустить элементарное действие зайти на страницу - нажать кнопку, в цикле на 50-100 раз и посмотрите сколько уходит памяти в самом начале и сколько спустя например 20 циклов, и эта цифра постоянно будет расти

stanny
Вы пришли сюда спорить или получить ответ на вопрос? Вам уже сказали, что количество памяти отжираемое браузером, регулируется настройками браузера, но не iMacros'a.
Если вы соблаговолите воспользоваться поиском, то думаю найдете несколько тем, где это обсуждалось, а также различные советы по оптимизации браузера, суть их, использовать либо модификации FF, например WaterFox, либо использовать более старые версии FF, плюс периодический перезапуск браузера с запуском нужного скрипта при старте.

18-11-2017 23:36:44

stanny пишет:

дело не в коде

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

InfSub пишет:

stanny
Вы пришли сюда спорить или получить ответ на вопрос?

Я не спорю, я говорю про факты которые легко отследить. Память отжирается при использовании imacrosa, при стандартном использовании браузера с потреблением памяти все в порядке, даже если повторить в ручную что делает макрос. Получается тогда под imacros надо заводить отдельный браузер с нестандартными настройками.

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

stanny
Этим iMacros страдает достаточно давно, а может и не iMacros, а FF при работе iMacros'a.
По поводу отдельного браузера, у большинства работает одновременно по несколько портабельных версий.
Для решения проблем с зависаниями, как уже писал, используется автоматизированный перезапуск FF с помощью cmd или любых других средств.

Подскажите, скорость воспроизведения iMacros кода зависит от загруженности оперативки. Вижу что FF подзагрузил оперативку, но не завис, откликается все норм. Открыта одна вкладка, но с большим объемом из поискового результата.
И вот запускаю iim на скорости FAST а он работает как на MEDIUM. Это норм?

Alladin
Вообще,  нет,  не норм

InfSub

подскажите а в чем может быть причина. Работаю двумя кодами, первым скорлю до конца результата в низ. Подсчитал что найдено например 3000 групп, запускаю второй код в цикле 3000, которым записываю названия и адреса в txt. И вот тут уже код работает как будто в режиме MEDIUM, хотя стоит FAST. Видно что немного лагает. Возможно это из-за большого кол-ва циклов, или большого объема подгруженной информации на странице?
FF - 47.0.1   
iMacros - 8.9.7.   
Mac OS

Ответ в вашем вопросе:

Alladin пишет:

большого объема подгруженной информации на странице

Alladin пишет:

подскажите а в чем может быть причина.

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

InfSub
Не знаете, а может ли Portable Firefox решить эту проблему? Устанавливать пока не рискую, не могу найти форума, отзывов или хоть какой-то дискуссии по Portable Firefox для MacOS.

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

Alladin пишет:

У меня с самого первого цикла он ведет себя так.

Пробуй изменить логику построения скрипта.
к примеру, о чем я писал, было так

скрытый текст

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=SPAN ATTR=ID:LastBetInfoWon EXTRACT=HTM');
if (iimGetExtract().indexOf("выигрыш")>0 && iimGetExtract().indexOf("display: none;")<0) continue;
else lost();


тормозило
сделал так
скрытый текст

Выделить код

Код:

try {
var z = window.document.querySelector('span[id="LastBetInfoWon"]:not([style="display: none;"])').innerHTML;
} catch(e) {lost();};


полетело

Egorushka1974
Я пытался переписать код из iim в js и сразу в цикл ввести, но у меня не вышло, знаний пока не хватает, и отклика на форумах не нашел. Вот и работаю пока так, как умею.
К сожалению, пока не могу разобрать и адаптировать ваш скрипт под свой.

У мнея так

скрытый текст

Выделить код

Код:

SET !REPLAYSPEED FAST
SET !ERRORIGNORE YES
TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT
TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT
SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")
SET !EXTRACT NULL
ADD !EXTRACT {{!VAR1}}

SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1")
TAG POS={{!LOOP}} TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT
TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF
SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_A.txt

Alladin пишет:

Я пытался переписать код из iim в js и сразу в цикл ввести

я не гарантирую работоспособность кода, не знаю с какого сайта,
не знаю какие селекторы задействованы, но исходя из вашего куска кода?
если я правильно понял его,
я примерно по следующему пути пошел бы

скрытый текст

Выделить код

Код:

var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные
var Path='C:\\papka1\\papka2\\';//путь до папки куда сохраняем результаты.

for(w=1; w=1000; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract().match(/(.*?)\s·\s\d+/).pop(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimPlayCode('SET !EXTRACT '+a+'\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=*.txt');
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT');
var c = iimGetExtract();
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF');
var d = iimGetExtract();
iimPlayCode('SET !EXTRACT '+c+'\nADD !EXTRACT '+d+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=URL.txt');
var a = 0, b = 0, c = 0, d = 0; //после сохранения данных, обнуляем переменные
}


да, и расширение должно быть *.js

Egorushka1974
Зачем каждый раз вы пишете: var имя_переменной?  Вы их уже объявили в первой строке

InfSub
вверху я их объявил и приравнял к 0,
а в теле цикла я передаю им значения вынутые из структуры сайта.
ошибки то не будет.

Egorushka1974
Не спорю, что ошибки не будет, но смысла в этом нет, так как вы их объявили в первой строке.
Ключевое слово var используется для объявления или другими словами, создания переменной, указывать var при каждом присвоении переменной нового значения,  синтаксически не верно.

InfSub пишет:

Не спорю, что ошибки не будет,

Спасибо, учту на будущее.

Egorushka1974
Спасибо!

Egorushka1974 пишет:

не знаю с какого сайта,

Работаю я с результатом поиска на фуйсбуке.
Вот например

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


ссылки публикуются в тегах noindex под спойлером
Возьмем первую группу из списка, в результате в txt в столбик вытаскиваются:
скрытый текст

Выделить код

Код:

"Wow Реклама", "Сообщества" , "Нравится: 80 тыс." , "https://www.facebook.com/wowreklama/?ref=br_rs" 


и так по порядку все что нашлось.

Egorushka1974 пишет:

взял вашу регулярку, как работает не проверял, сайт неизвестен

эта регулярка тут потому что, в каждом классе дважды указывается url страницы

Роде пробегает, видно подсвечивает, но файл с результатом не создается, не понимаю почему. Путь вроде указал верно. В чем может быть причина?
И у вас в условии стоял w=1000, он вообще не работал, я убрал его, и заработало, но не знаю где посмотреть, не пойму куда он файл записывает, и записывает ли вообще...

скрытый текст

Выделить код

Код:

var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные
var Path='\\Users\\Admin\\Desktop\\iMacros\\';//путь до папки куда сохраняем результаты.

for(w=1; ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimPlayCode('SET !EXTRACT '+a+'\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=*.txt');
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT');
var c = iimGetExtract();
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF');
var d = iimGetExtract();
iimPlayCode('SET !EXTRACT '+c+'\nADD !EXTRACT '+d+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=URL.txt');
var a = 0, b = 0, c = 0, d = 0; //после сохранения данных, обнуляем переменные
}


замечание

InfSub

Alladin пишет:

И у вас в условии стоял w=1000

Потому что, там ошибка и должен стоять не оператор присваивания =, а оператор равенства ==

Alladin пишет:

Путь вроде указал верно. В чем может быть причина?

Если у вас Windows, должен быть указан диск, если *nix,  корректный путь, в никсах нет обратных слешей в пути

InfSub пишет:

Если у вас Windows, должен быть указан диск, если *nix,  корректный путь, в никсах нет обратных слешей в пути

у меня mac os. я правильно вас понял

скрытый текст
/Users/Admin/Desktop/iMacros

сейчас именно так путь выставил, и поставил w==10 он вообще не реагирует на запуск. убрал w==10, код запустился но опять не создает txt файл.

чет я совсем запутался, что не так то.
в таком виде, нажимаю "воспроизвести", и не чего не происходит
скрытый текст

Выделить код

Код:

var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные
var Path= '/Users/Admin/Desktop/iMacros/';//путь до папки куда сохраняем результаты.

for(w=1; w==10  ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimPlayCode('SET !EXTRACT '+a+'\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=*.txt');
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT');
var c = iimGetExtract();
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF');
var d = iimGetExtract();
iimPlayCode('SET !EXTRACT '+c+'\nADD !EXTRACT '+d+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=URL_URL.txt');
var a = 0, b = 0, c = 0, d = 0; //после сохранения данных, обнуляем переменные
}

Alladin
А вы уверены что такой путь существует? Что регистр названий папок верен? В *nix'ах, в т. ч. и в MacOs папки регистрозависимы, и это две разных папки: users и Users

20-11-2017 19:29:19

Alladin пишет:

поставил w==10

Полностью строку параметров цикла покажите

InfSub пишет:

А вы уверены что такой путь существует?

путь взял из "свойства папки", какой там указан, такой и указал в коде

Alladin
Если не получается с полным путем,  заменитель на *,  как это было у вас раньше и ищите файл в папке iMacros/Download т. е. там,  куда он ранее и сохранялся

InfSub пишет:

Полностью строку параметров цикла покажите

вот в таком виде код, нажимаю "воспроизвести", и не чего не происходит

скрытый текст

Выделить код

Код:

var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные
var Path= '*';//путь до папки куда сохраняем результаты.

for(w=1; w==10  ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimPlayCode('SET !EXTRACT '+a+'\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=URL_URL.txt');
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT');
var c = iimGetExtract();
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF');
var d = iimGetExtract();
iimPlayCode('SET !EXTRACT '+c+'\nADD !EXTRACT '+d+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=URL_URL.txt');
var a = 0, b = 0, c = 0, d = 0; //после сохранения данных, обнуляем переменные
}


верно, тут же заменить путь к папке?
скрытый текст

Выделить код

Код:

var Path= '*'



20-11-2017 19:45:24

InfSub пишет:

Если не получается с полным путем,  заменитель на *

попробовал так

скрытый текст

Выделить код

Код:

iimPlayCode('SET !EXTRACT '+a+'\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt');


и так
скрытый текст

Выделить код

Код:

var Path= '*';
iimPlayCode('SET !EXTRACT '+a+'\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=URL_URL.txt');


не создает нигде файл txt

Alladin, Egorushka1974,  кстати да,  еще одна ошибка Egorushka1974,  он написал var'ы там где не надо,  но перед переменной w нет обьявления переменной т. е.: var w=1;
Проблема думаю, не в этом (хотя как оно реализовано под мак - не знаю), но такое объявление переменной приведет к другим ошибкам
С телефона анализировать код не удобно,  так что сейчас,  не могу сказать где ошибка,  надо на компе посмотреть
По поводу * да там или в самом коде,  только ошибок не наделайте

20-11-2017 19:53:43
Alladin
Версия FF и iMacros какая?

InfSub пишет:

Потому что, там ошибка и должен стоять не оператор присваивания =, а оператор равенства ==

ну то что ошибка, признаю, виноват, делал на работе в пол глаза глядя в монитор.
на мой взгляд правильнее не == так, а так наверное все же
for(w=0; w<=1000; w++){
...................................
} для случая Алладина

Alladin

скрытый текст

Выделить код

Код:

iimPlayCode('SET !EXTRACT "'+a+'"\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt');


отсутствовали двойные кавычки при присвоении !extract значения

20-11-2017 20:07:12

Egorushka1974 пишет:

на мой взгляд правильнее не == так, а так наверное все же
for(w=0; w<=1000; w++){

Тогда вам везде придется прибавлять к w единицу

InfSub, Egorushka1974

InfSub пишет:

отсутствовали двойные кавычки при присвоении !extract значения

Начал создавать txt файл. Но работает не корректно:
этим кодом

скрытый текст

Выделить код

Код:

var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные

for(w=1; w==5 ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimPlayCode('SET !EXTRACT " '+a+'"\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt');
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT');
var c = iimGetExtract();
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF');
var d = iimGetExtract();
iimPlayCode('SET !EXTRACT " '+c+'"\nADD !EXTRACT '+d+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt');
var a = 0, b = 0, c = 0, d = 0; //после сохранения данных, обнуляем переменные
}


он записывает все в кучу и беспорядочно:
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


а первоначальным кодом:
скрытый текст

Выделить код

Код:

SET !REPLAYSPEED FAST
SET !ERRORIGNORE YES
TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT
TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT
SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")
SET !EXTRACT NULL
ADD !EXTRACT {{!VAR1}}

SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1")
TAG POS={{!LOOP}} TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT
TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF
SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_TEST.txt


писал все ровно и по порядку: 
скрытый текст
"название группы", "тип группы", "кол-во like this", "URL группы"
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


И еще, там в DOM ссылка на группу два раза прописана в разных div[class. И по этому добавлено было условие
скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1")
TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF


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

20-11-2017 21:18:01

InfSub пишет:

Тогда вам везде придется прибавлять к w единицу

так он хоть запускается

скрытый текст

Выделить код

Код:

for(w=0; w<=1000; w++)


а так даже не реагирует на "воспроизвести"
скрытый текст

Выделить код

Код:

for(w=0; w==1000; w++)

Alladin пишет:

а так даже не реагирует на "воспроизвести"

да, только значение переменной w верните равным единице, как уже писал выше - отвечал с телефона на ходу, по этому слона и не заметил, Egorushka1974 был прав по поводу условия, должно быть меньше или равно 0 иначе цикл действительно не запустится
ну, как говорится, и на старуху бывает проруха... банальность, а не увидел http://www.kolobok.us/smiles/standart/pardon.gif

Alladin пишет:

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

так замените условие w++ на нужное вам w++*2-1

20-11-2017 21:43:35
если при сохранении все также переносит по пол строки, то сделайте так:

скрытый текст

Выделить код

Код:

iimPlayCode('SET !EXTRACT "'+a.replace(/\s+/g,' ')+'"\nADD !EXTRACT "'+b.replace(/\s+/g,' ')+'"\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt');

InfSub
Тут нельзя поставить условие w++ для всего цикла.
И дело не в том что переносит по пол строки, сам код, он как бы разбит на 2. Да, для разных переменных, но все же дважды прописан

скрытый текст

Выделить код

Код:

iimPlayCode('SET !EXTRACT " '+a+'"\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt');
iimPlayCode('SET !EXTRACT " '+c+'"\nADD !EXTRACT '+d+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt')


вот и получается что вторую часть он кидает на следующую строку.


Когда я писал код под iim, я так видел это:
берем в экстракт
скрытый текст

Выделить код

Код:

TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT


и берем в экстракт
скрытый текст

Выделить код

Код:

TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT


потом кидаем этот экстракт в переменную и чистим от ненужного
скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")


обнуляем экстракт, и в чистый экстракт добавляем переменную вар1.
потом туда дописываем
скрытый текст

Выделить код

Код:

TAG POS={{!LOOP}} TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT


и дописываем
скрытый текст

Выделить код

Код:

TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF


но уже для этого тэга ставим условие
скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1")


это и позволяет второй раз не дублировать ссылки в конечном результате
скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1") 
TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF


и в конце весь результат кидается в txt.
Вот я и не знаю, как этот алгоритм в js прописать.

Alladin
Так замените переменные имакроса на js сделайте по аналогии с кодом показанным вам Egorushka1974,  только с вашей логикой

InfSub
а возможно ли в цикле прописывать еще один цикл?
как в данном цикле js прописать цикл

скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1") 
TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF

Alladin

скрытый текст

Выделить код

Код:

const n='\n';
for (let i=j=1, r; i<=1000; j=++i*2-1){
    iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
                +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
    );
    r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
    iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
                +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
                +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
                +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_A.txt'
    );
};

InfSub
Спасибо!!! Ты гуру:) Работает идеально.

Egorushka1974
Спасибо что подключился!!! Круто что можно обратиться за советом и помощью, и ты получишь и то и другое.

InfSub
Еще потревожу. Столкнулся с тем, что не во всех блоках прописана нужная для извлечения информация. Например: есть только название, или название и url... И как только доходит до такого блока, js выдает ошибку и останавливается

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


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

Выделить код

Код:

if (iimGetLastExtract().match() == null) {
      iimPlayCode('SET !EXTRACT NULL'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
      );
};


но он не срабатывает. Не подскажите где ошибка?

Весь код целиком
скрытый текст

Выделить код

Код:

const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=20; j=++i*2-1){
    iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
                +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
    );
    r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
    iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
                +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
                +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
                +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
    );

if (iimGetLastExtract().match() == null) {
      iimPlayCode('SET !EXTRACT NULL'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
      );
};

};

Чой-то догнать не могу. Подскажите плиз.

так запросом получаю куки для следующего захода

Выделить код

Код:

 X = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
x=new X();
HEADERS=x.getResponseHeader('set-cookie')


Имеет такой вид

token=Y2NKYkEwSVFPdWZEOUphUGM0aUhnQXZPTmJ2bnF1ZXB1YTQ0VjZSK1d1R1Y0cjkraEphZFA2OEsvclBBYkdJQQ%3D%3D; expires=Fri, 16-Nov-2018 09:41:46 GMT; Max-Age=31104000; path=/


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

Но как обновить эту куку в JSON.файле тяму не хватает.

InfSub

Alladin пишет:

Спасибо что подключился!!!

Да, пожалуйста.
вот, кстати, рекомендую, сам читаю

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


ссылки публикуются в тегах noindex под спойлером

3 замечание, бан на неделю

InfSub

Egorushka1974 пишет:

вот, кстати, рекомендую

Спасибо.

Пытаюсь выставить условия для цикла, но чет не хочет он работать. Битый час бьюсь уже. Суть в том, что бы перед выполнением кода, проверялось, если нет такого, то записываем "пусто".
Может подскажете, где и что делаю не так

скрытый текст

Выделить код

Код:

const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=10; j=++i*2-1){

iimPlayCode( 'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT')
q=iimGetLastExtract()

if (q == true) {
    iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
                +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
    );
    r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
    iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
                +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
                +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
                +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
    );
}
if (q == false) {
      iimPlayCode('SET !EXTRACT NULL'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
      );
}

};

Alladin

скрытый текст

Выделить код

Код:

if (q != '') {
    //**********
} else {
    //**********
}


смотрите алертом что именно попадает в переменную q

karginaolga
попадает 80K like this. Где - 80K постоянно меняется, а like this неизменно. Это мне и нужно. Если нет like this, то и нужно пропускать этот блок. А точнее, если вообще нет этого

скрытый текст

<a style="outline: 1px solid blue;" href="/search/302615623128218/likers?ref=snippets">80K like this</a>


тогда else. Но как это вставить в условие?

Alladin

скрытый текст

Выделить код

Код:

if (iimGetLastExtract().indexOf("like this")>0) {
    //***********
} else {
    //***********
}


и научитесь задавать конкретные вопросы:
пробираемся в квартиру, заходим на кухню, если есть телевизор то забираем и уносим ноги если нету уносим ноги

karginaolga пишет:

и научитесь задавать конкретные вопросы

учту:D
через GetLastExtract не получаеться. два блока подряд с отсутствующим

скрытый текст

<a style="outline: 1px solid blue;" href="/search/302615623128218/likers?ref=snippets">80K like this</a>


и ошибка, ему не откуда брать предыдущие дынные.
А можно GetLastExtract заменить на другую команду.
Заходим в DOM сектора, если есть like this работаем, если нет тогда else

попробуйте в кавычках оставить только like
как это не откуда, а так:

скрытый текст

Выделить код

Код:

var q = window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i].outerHTML;
if (q.indexOf("like")>0) {
    //***********
} else {
    //***********
}

karginaolga
И так не работает. Там если не поставил ни кто like, в DOM этого сектора вообще нет. Скрипт доходит до этого сектора и ошибка.
Вот загляните в дом

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


ссылки публикуются в тегах noindex под спойлером
7й-8й-9й блок без лайков, скрипт и не знает на что смотреть.

21-11-2017 19:53:50
karginaolga
только нужно залогинеться для начала. я могу скрин сделать и прислать.

InfSub

Alladin

скрытый текст

Выделить код

Код:

if (window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i]) {
    //если есть
} else {
    //если нету
}


у меня вообще нету, вот что есть:
скрытый текст

Выделить код

Код:

var q = window.document.querySelectorAll('div[class="_glm"]')[0].textContent;
alert(q);

karginaolga

вот так сейчас сработало, но он доходя до сектора без лайков, начинает с else и все последующие циклы пишет как в условиях else, как будто не выходит из цикла else

скрытый текст

Выделить код

Код:

const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=25; j=++i*2-1){


if (window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i]) {
    iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
            +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
    );
    r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
    iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
            +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
            +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
            +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
    );
}

  else {
      iimPlayCode('SET !EXTRACT NULL'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
      );
}

};


21-11-2017 20:17:00

karginaolga пишет:

у меня вообще нету, вот что есть:

а вот что у меня

скрытый текст
http://s41.radikal.ru/i093/1711/25/25c3064ac6d7.png

вот здесь с нуля идет отсчет [i]
поставьте [i-1]

karginaolga
здесь?

скрытый текст

Выделить код

Код:

if (window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i-1])


не работает, вот результат
скрытый текст

"Wow Реклама","Community","80K like this","https://www.facebook.com/wowreklama/?ref=br_rs"
"Реклама Экспо","5.0(3) · Company","73 like this","https://www.facebook.com/ReclamaExpo/?ref=br_rs"
"Sostav.ru: реклама и маркетинг в России","Business & Economy Website","61K like this","https://www.facebook.com/Sostav.ru/?ref=br_rs"
"СпортАкадемРеклама","5.0(4) · Event Planner","165 like this","https://www.facebook.com565774/?ref=br_rs"
"Parking Реклама","Organization","19 like this","https://www.facebook.com/ParkingReklama/?ref=br_rs"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"


а должен только там где нет лайков писать "пусто"

21-11-2017 20:33:08
karginaolga
а так
скрытый текст

Выделить код

Код:

var q = window.document.querySelectorAll('div[class="_pac"]')[i].outerHTML;
if (q.indexOf("like")>0) {


вообще ругается на эту строчку
скрытый текст

Выделить код

Код:

r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();


когда снова доходит до блоков с лайками

Alladin
у меня так работает:

скрытый текст

Выделить код

Код:

var q = window.document.querySelectorAll('div._glm')[i-1].textContent.match(/\d+/);
if (q != null) {
    alert('ok');
} else {
    alert('no');
}

karginaolga пишет:

у меня так работает:

да, но: после проработки по else он перепрыгивает одну группу, а лайки прописывает из группы через +3й, в итоге одна пропущенная группа после "пусто", и лайки берет из группы которая следующая 3я по счету. чет каша получается. Но в целом заканчивает без ошибок.

21-11-2017 21:26:33
karginaolga
а лайки он берет от сюда

скрытый текст

Выделить код

Код:

+'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n


скорее всего тут и происходит путаница
скрытый текст

Выделить код

Код:

const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=25; j=++i*2-1){

var q = window.document.querySelectorAll('div._glm')[i-1].textContent.match(/\d+/);
if (q != null) {

    iimPlayCode('TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
            +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
    );
    r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
    iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
            +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
            +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
            +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
    );
}

  else {
      iimPlayCode('SET !EXTRACT NULL'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
      );
}

};

Alladin

скрытый текст

Выделить код

Код:

const n='\n';
var a = "ПУСТО", z = 0;
for (let i=j=1, r; i<=25; j=++i*2-1) {
    var q = window.document.querySelectorAll('div._glm')[z].textContent.match(/\d+/);
    if (q != null) {
        iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
                +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
        );
        r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
        iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
                +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
                +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
                +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
        );
    } else {
        iimPlayCode('SET !EXTRACT NULL'+n
                +'ADD !EXTRACT "'+a+'"'+n
                +'ADD !EXTRACT "'+a+'"'+n
                +'ADD !EXTRACT "'+a+'"'+n
                +'ADD !EXTRACT "'+a+'"'+n
                +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
        );
    }
    z++;
};

karginaolga
не чего не поменялось. после каждой "пусто", пропускается следующая группа после этого "пусто" и к предыдущим лайкам из группы +3 еще +3, и так по нарастающей.

21-11-2017 21:54:07
karginaolga
кажется я понял в чем дело. вот тут прописан цикл пробега по дому

скрытый текст

Выделить код

Код:

for (let i=j=1, r; i<=25; j=++i*2-1) {
    
        iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
                +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
        );
        r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
        iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
                +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
                +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
                +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
        );
    } 


и когда срабатывает else цикл ломается, вот и получается кто в лес кто по дрова пошло записываться, он же продолжает перебирать из ранее прописанного условия. думаю методом else нужно прописать что бы просто пропускал всю дерикторию/блок где нет like.
Как думаете?

21-11-2017 22:03:09
karginaolga
Хотя я сейчас прокрутил в цикле 20, проблема в то что пропускает одну группу после else, и проблема в лайках, они записываются из группы +3 +2. А название и url все совпадает.

Alladin пишет:

цикл ломается, вот и получается кто в лес кто по дрова

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

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

Тетенька, дайте попить, а то так есть хочется, аж переночевать негде

надеюсь не надо объяснять почему? или все же стоит напомнить изначальный вопрос о том, что: iim-код начал тормозить и что можно с этим сделать, а перерос в вопросы кривого экспорта данных, которые вы даже на iim-скриптах не тестировали
включайте голову, читайте, как работает js, повторюсь, если вы думаете, пробуете и не получается - это одно, если вы бездумно просите помощи - это совсем другое
пока что, во всем диалоге выше, я практически не вижу, каких-либо действий с вашей стороны, которые позволили бы предположить, что вы что-то самостоятельно попробовали и почитали, поискали ответы в интернете
я не считаю, внедренный вами if - мыслительным процессом, ибо вы получив ошибку на уровне поиска регулярным выражением - внедряете проверку ниже этого самого выражения, при том проверку пустого места вместо результата работы регулярки:

скрытый текст

Выделить код

Код:

if (iimGetLastExtract().match() == null) {

что вы тут пытаете найти пустым .match() ? где регулярное выражение, результат которого вы сравниваете с null?


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

InfSub
я изначально написал, что в js слаб, да, написал код в iim, но как в js его реализовать знаний не хватает. Egorushka1974 отозвался, и перевел код в js, InfSub подправил его в рабочее состояние. Но код сработал с ошибками.  Egorushka1974 кинул мне ссылку на сайт по js. Там я и прочел о функциях if. Попробовал его прописать, js выдал ошибки. JS только на стадии моего изучения, и я обратился на форум с вопросом, в чем может быть проблема.karginaolga дала варианты, в чем может быть проблема, с вариантами решения. Она кидала варианты решения, я тестировал, и выдавал результат, параллельно читал и искал, как эти варианты можно адаптировать под мой код. Вот у нас и дискуссия образовалась. Возможно я и ошибаюсь, но форумы для того и создаются, что бы задавать вопросы если не знаешь, и получать ответы от знающих людей людей, если они хотят помочь тебе и поделиться. А вы InfSub за это накидали мне 1 зам + (1/3). Тогда пропишите в правилах, что в эту тему, можно обращаться лишь тогда, когда как минимум не на стадии изучения, то бишь для полупрофессионалов или профессионалов. И тогда, думаю, такие глупые вопросы как мои, не будет тут фигурировать.

InfSub Спасибо что нашли вчера время, и подкорректировали код в рабочее состояние. И нашли сегодня время, что бы написать такой талмуд пожеланий и умозаключений. Я учту.
Egorushka1974 Спасибо что откликнулся (еще раз).
karginaolga Спасибо что откликнулась.

Alladin пишет:

А вы InfSub за это накидали мне 1 зам + (1/3).

читайте внимательно за что у вас замечания, ни одного по поводу того, что вы сейчас пишите, но все связанные с оформлением постов:


(читайте правила раздела, они дополняют основные правила форума и имеют ту же силу)

Alladin пишет:

Тогда пропишите в правилах, что в эту тему, можно обращаться лишь тогда

в правилах прописано, конкретно, вопросы по js уровня a+b считаются флудом и не потому что a+b это для профессионалов, а потому что большинству лень читать и изучать js (изучите основы, больше половины возникших выше у вас вопросов - связано с незнанием js)

1.5  Создавать темы или сообщения, не имеющие прямого отношения к данной теме, в том числе, по JavaScript. JS - обсуждается, только в связке JS + iMacros for Firefox. Для ответов на вопросы, из серии: как сложить a+b в js и аналогичных - есть Google. Подобные сообщения могут быть расценены как флуд.

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

22-11-2017 02:38:44

Alladin пишет:

тогда, думаю, такие глупые вопросы как мои, не будет тут фигурировать.

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

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

здравствуйте. как регуляркой из значения, полученого в iimGetLastExtract , выбросить первую цифру, оставит только две последние?

код

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=A ATTR=CLASS:data EXTRACT=HTM'); data=iimGetLastExtract().replace(/\D+/g,"").match(/\d{3}/).pop();
alert(data); // выдаёт 123, надо только 23. 

Flanker
\d
Цифра, символ от 0 до 9.
\D
Не-цифра, то есть любой символ кроме \d, например буква.

Flanker

скрытый текст

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=A ATTR=CLASS:data EXTRACT=HTM'); 
data=iimGetLastExtract().replace(/\D+/g,"").match(/\d(\d{2})/).pop();
alert(data);

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

artbook2
Пробуйте записать через event mode

удалено, п.п. 1.4

InfSub

Вопрос. Имею на странице следующий текст:
"Яблоки, Груши, Вишни"

скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=P ATTR=TXT:Яблоки, Груши, Вишни* EXTRACT=TXT


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

FastSpeed
Посмотреть код элемента в обоих вариантах, например, с помощью extract=htm и сравнить в чем отличия, ну и соответственно проверять есть ли "скрывающий" параметр или его нет

InfSub, Спасибо, там текст был с атрибутом display: none. Проверил по этому атрибуту и все ок.

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

stalker46
FAQ - прокрутка страницы

Подскажите, почему обработчик срабатывает только после повторного запуска во всех трёх вариантах:

скрытый текст

Выделить код

Код:

window.open("https://forum.mozilla-russia.org/");
window.onload = function () {
      alert('DOM ready');  
};
Выделить код

Код:

var ready = window.open("https://forum.mozilla-russia.org/");
ready.onload = function () {
      alert('DOM ready');  
};
Выделить код

Код:

window.open("https://forum.mozilla-russia.org");
window.addEventListener("DOMContentLoaded", function (){alert('DOM ready')});


А если открывать ссылку в активной вкладке, то вообще не срабатывает.

Может есть какое-нибудь решение для imacros, как работать с DOM, не дожидаясь полной загрузки страницы?

Squatter
window.onload будет срабатывать только при открытии  новой вкладки

karginaolga, проблема не в этом, а в том, что обработчик срабатывает только на втором открытии новой вкладки, видимо потому что документ уже изначально загружен:

скрытый текст

Выделить код

Код:

var i=1;
function ready() {
        alert('DOM ready ' + i);
        };

for (;;i++){
        window.open("https://forum.mozilla-russia.org");
        window.addEventListener("DOMContentLoaded", ready);//Начнёт срабатывать только со второй итерации
iimPlay("CODE:PAUSE");
}


Поэтому нужно привязывать обработчик к действиям с вкладками. Но поскольку глобальная переменная gBrowser не определяется напрямую из макроса, то придётся открыть к ней доступ через QueryInterface как описано тут


Полное решение с переходом на активную новую вкладку:
скрытый текст

Выделить код

Код:

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 не дожидаясь загрузки стилей, изображений и фреймов.

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

скрытый текст

Выделить код

Код:

newTabBrowser.addEventListener("load", ready, true);

Пдскажите, почему в таком виде

скрытый текст

Выделить код

Код:

SET !DATASOURCE TEST_1.csv
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
SET !DATASOURCE_DELIMITER ;
URL GOTO={{!COL4}}


выдает ошибку
скрытый текст

RuntimeError: Column number 4 greater than total number of columns 1, line 5 (Error code: -953)


а в таком виде работает без ошибок
скрытый текст

Выделить код

Код:

SET !DATASOURCE TEST_1.csv
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
SET !DATASOURCE_DELIMITER ;
SET !DATASOURCE TEST_1.csv
URL GOTO={{!COL4}}


и именно когда перед url goto второй раз продублирован путь до файла.
Почему так?

s.stake
потому что wiki читать надо:

!DATASOURCE DELIMITER
...
This value must be set before setting a value for !DATASOURCE.

InfSub пишет:

потому что wiki читать надо

спасибо

Подскажите кто знает, как на Mac os путь к файлу указать, перепробовал разные варианты, и все-равно пишет:

скрытый текст

[Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIChannel.open]"  nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)"  location: "JS frame :: resource://imacros/utils.js :: imns.FIO.detectBOM :: line 333"  data: no], line -429 (Error code: -991)


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

Выделить код

Код:

function readExt(filename){return imns.FIO.readTextFile(imns.FIO.openNode(filename))}//ЧТЕНИЕ ФАЙЛА
var path = '/Users/myBook/Desktop/iMacros/'
var file = 'url.txt'
var fileText = 'text.txt'
var arrUrl = readExt(path+'\\'+file).split('\n') //читаем ссылки
var text = readExt(path+'\\'+fileText ) //читаем текст
iimDisplay(arrUrl )
for(i=0; i<arrUrl.length; i++){ //..цикл по количесву ссылок
iimPlayCode('URL GOTO='+arrUrl[i]) // заходим по ссылке(каждый раз новая)
}

Подскажите как можно нажать кнопку send в web telegram
Так работает.

скрытый текст

Выделить код

Код:

EVENT TYPE=CLICK SELECTOR="HTML>BODY>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(3)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV>DIV>FORM>DIV:nth-of-type(3)>BUTTON" BUTTON=0


Но есть вероятность что дом может быть другой и этот код уже не будет работать.. хотелось бы 100% вариант.
Так почему то не хочет.
скрытый текст

Выделить код

Код:

window.document.querySelector('.im_submit_send').click();


html
скрытый текст

Выделить код

Код:

<button type="submit" class="btn btn-md im_submit im_submit_send" ng-class="draftMessage.type == 'edit' ? 'im_submit_edit' : 'im_submit_send'">
      <span data-content="Send" class="im_submit_send_label nocopy" my-i18n="im_submit_message"></span>
      <span data-content="Save" class="im_submit_edit_label nocopy" my-i18n="im_submit_edit_message"></span>
</button>

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

Загрузка картинки через js код не выполняется, и не выкидывает ошыбку, если делаю тоже самое
из iim файла, картинка загружается.

скрытый текст

Выделить код

Код:

immPlayCode('TAG POS=1 TYPE=INPUT:FILE FORM=ID:edit_product_* ATTR=ID:image-upload CONTENT=my<SP>pictures.png')


HTML
скрытый текст

Выделить код

Код:

<input id="image-upload" data-bind-show="!isUploading()" data-bind-event-change="fileInputChanged(event, this)" multiple="" accept="image/*" class="js-no-dirty" type="file">

kani339
что вы подразумеваете под загрузкой картинки? загрузку на сайт?
сомневаюсь, что что-то будет работать без указания пути до файла, что из iim, что из js

04-12-2017 20:40:57
предположу что ошибка банальна, отсутствие экранирующих символов в пути до файла, см. аналогичный пример в FAQ => iMacros + JS => Описание и примеры использования => iimPlay ()

darkzp пишет:

Так почему то не хочет.

а так попробуй

скрытый текст

Выделить код

Код:

window.document.querySelector('button[type=submit][class="btn btn-md im_submit im_submit_send"]').click();

Egorushka1974
удалено, избыточное цитирование
Я и dispatchEvent пробовал ничего... загадочная кнопка)

InfSub

darkzp Когда EVENT TYPE=CLICK записывали макросом, он там фрейм не определил, случайно?

Squatter, Нет

Здравствуйте всем!) Подскажите как сделать?. Нужно зайти на сайт, затем проверить объект(цифру), если больше 0, то записать адрес из адресной строки в txt файл.

ser649
использовать js и условный оператор if

InfSub
удалено, избыточное цитирование
Спасибо! Если не затруднит, можете пример набросать?

InfSub

ser649
не затруднит, если вопрос нормально зададите (см. правила данного раздела), а "гадать на кофейной гуще" - увольте

ser649
удалено, избыточное цитирование
Такой простой код использую, меня устраивает!

скрытый текст

Выделить код

Код:

var f_url='url.csv';
var f_yes='yes.csv';

var i=1,u,n='\n';
while(iimPlayCode('SET !DATASOURCE '+f_url+n+'SET !DATASOURCE_LINE '+(i++)+n+'SET !EXTRACT {{!COL1}}'+n)==1){
    u=iimGetLastExtract();
    if(iimPlayCode('URL GOTO='+u+n+'SET !TIMEOUT_STEP 10'+n+'Здесь Ваше условие. В моём был код поиска определенной капчи.'+n)==1){
        iimPlayCode('SET !EXTRACT '+u+n+'SAVEAS TYPE=EXTRACT FOLDER=* FILE='+f_yes+n);
    };
};
iimDisplay('End file: '+f_url);


замечание

InfSub

Уважаемые! Подскажите " софт" отображения содержимого файлов (для мониторинга).

dim222, В смысле? Прямое чтение содержимого не подходит?

скрытый текст

Выделить код

Код:

alert(imns.FIO.readTextFile(imns.FIO.openNode("C:\\Users\\Desktop\\Filename.txt")));

Squatter
Без браузера. Имею ввиду мониторить итоги выполнения скриптов.На данный момент использую Sublime txt. Хотелось бы иметь софт с настройками оформления интерфейса под себя.

dim222
notepad++ чем не устраивает? редактор тем встроенный есть

08-12-2017 18:57:41
или заворачивай в html-теги и смотри любым браузером

InfSub
удалено, избыточное цитирование
Дабы не годать на кофейной гуще) попробую объяснить,.Открываем сайт

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


ссылки публикуются в тегах noindex под спойлером
Затем нажимаем random, затем смотрим balance, если больше 0, то записываем адрес из адресной строки в файл txt

замечание

InfSub

ser649

скрытый текст

Выделить код

Код:

while(1){
    iimPlayCode('URL GOTO=https://privatekeys.pw/keys/1'+'\n'
                +'TAG POS=1 TYPE=A ATTR=CLASS:page-link&&TXT:Random'
    );
    while(iimPlayCode('TAG POS=1 TYPE=SPAN ATTR=CLASS:"badge badge-secondary" EXTRACT=TXT'),iimGetExtract()=='#EANF#');
    if(+iimGetExtract().trim()>0){
        continue;
    }else{
        iimPlayCode('SET !EXTRACT {{!URLCURRENT}}'+'\n'+'SAVEAS TYPE=EXTRACT FOLDER=* FILE=url.txt');
    };
};

Всем привет!:rock:
Подскажите как посчитать сколько картинок в папке?

Gergi

скрытый текст

Выделить код

Код:

dir /B /A-D /S "C:\IMAGE\*.jpg" | find /N /C /V "" >> C:\IMAGE\out.txt

Hamzat пишет:

скрытый текст

Выделить код

Код:

imJS.setCookie(cookies /* Передаем массив кукис */ )


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

В iMacros 8.9.7  никто не встречал такой глюк с копированием папок каскадом?

FX 53.0 (32-бит)

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Squatter пишет:

В iMacros 8.9.7  никто не встречал такой глюк с копированием папок каскадом?

У меня такое часто бывает - это глюк появляется, если двигаешь полосу скролл-бара в панели Аймакроса, а вместо неё перетаскиваешь папку, и она так дублируется.
Я борюсь с этим так: через поиск нахожу любой *.iim или *.js файл в последней папке, перехожу в неё, переношу из неё все скрипты в правильное место, а весь каскад удаляю. Пользуюсь для этого ТоталКоммандером.
После нескольких таких случаев я полосу не двигаю, кликаю по стрелочке Вверх или Вниз.
Вроде бы от этого  глюка никак не  избавиться.

udalov, спасибо. А то не получалось отловить из-за чего это происходит)

всем привет, помогите пожалуйста

как закрыть окно windows в imacros

скрытый текст
http://s018.radikal.ru/i520/1712/64/3240a008c2ef.png

скрины публикуются под спойлером
После выгрузки файла окно остается открытым, можно его как то закрыть скриптом?

InfSub

Подскажите как в js можно что-то подобное достать.
iim = {{!FOLDER_MACROS}}

darkzp
уважаемый, не уже ли так сложно воспользоваться поиском или почитать FAQ?
практически на каждой странице топика есть ответ на этот вопрос

скрытый текст

Выделить код

Код:

iimPlayCode('set !extract {{!FOLDER_DATASOURCE}}');
alert(iimGetExtract());


{{!FOLDER_MACROS}} не работает в FF, читайте офф. вики

InfSub  что это значит? как сделать чтобы это окно закрывалось само?

vodogrey
вы через слово читаете? я, по-моему, ни к вам обращался при ответе и соответственно, отвечал не на ваш вопрос

Всем привет!:rock:
Есть другой вариант чистить браузер кроме CLEAR ?

Gergi
а поиском воспользоваться? тут где-то приводили примеры, как почистить, вроде бы, в теме про каптчи

Gergi
Удалить все куки

скрытый текст

Выделить код

Код:

var cm = Components.classes["@mozilla.org/cookiemanager;1"]
         .getService(Components.interfaces.nsICookieManager);
 
cm.removeAll();


Удалить куки по имени или для конкретного домена
скрытый текст

Выделить код

Код:

var cm = Components.classes["@mozilla.org/cookiemanager;1"]
         .getService(Components.interfaces.nsICookieManager);
var cookies = cm.enumerator;
            while (cookies.hasMoreElements()) {
                var cookie = cookies.getNext().QueryInterface(Components.interfaces.nsICookie);
                cm.remove(cookie.host, cookie.name, cookie.path, false);
            }


Соответственно для домена так
скрытый текст

Выделить код

Код:

cm.remove('forum.mozilla-russia.org', cookie.name, cookie.path, false);


по имени так
скрытый текст

Выделить код

Код:

cm.remove(cookie.host, 'punbb_cookie', cookie.path, false);


Можно всё вместе

На всякий случай, данные методы как и команда CLEAR не работают в режиме инкогнито.

Вот например из аккаунта ВК выходит,но при повторном входе высвечивается старый логин,а если вручную очистить то всё нормально

Gergi как чистили? Конкретный код?

Gergi
это не куки, а автозаполнение в браузере

скрытый текст

Выделить код

Код:

var cm = Components.classes["@mozilla.org/cookiemanager;1"]
         .getService(Components.interfaces.nsICookieManager);
 
cm.removeAll();
iimPlayCode('WAIT SECONDS=115')

Gergi, это полностью удаляет все куки в браузере. Там старой сессии неоткуда взяться.
Как вариант для надёжности попробовать

скрытый текст

Выделить код

Код:

var cm = Components.classes["@mozilla.org/cookiemanager;1"]
         .getService(Components.interfaces.nsICookieManager);
var cookies = cm.enumerator;
            while (cookies.hasMoreElements()) {
                var cookie = cookies.getNext().QueryInterface(Components.interfaces.nsICookie);
                cm.remove('.vk.com', cookie.name, cookie.path, false);
            }


Дело точно не в кукисах.

Проблема такая!
Есть прокси с логинами и паролями,на каждом прокси разные логины и пароли,смотрю в браузере во всех окошках стоит один прокси,а когда проверяю через 2.ip.ru то мне показывает прошлый прокси,в настройках браузера один прокси а на сайте проверяю там другой показывает,перед тем как поменять прокси скрипт чистит куки,CLEAR но почему то не спрашивает логин и пароль,если вручную почищу то тогда спрашивает логин и пароль.

Подскажите как разбить на три ячейки
Что бы вышло так "1","2","3"

скрытый текст

Выделить код

Код:

iimPlayCode('SET !EXTRACT '+iphttp+'"'+u1+'"'+u2+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=IP.txt');


Помню этот вопрос тут не раз обсуждался,но по поиску не нашёл.

Gergi
1[EXTRACT]2[EXTRACT]3

Как сюда кликнуть?
Комментарии ссылок яндекс диска
Скриншот элемента:

скрытый текст
http://i102.fastpic.ru/big/2017/1223/41/cc2e12fddce99e9bef4bc455bf561f41.png

ссылки на изображения публикуются в тегах IMG
загрузка изображений должна быть анонимной (без использования зарегистрированных аккаунтов на фотохостингах)

Что только не перепробовал:
скрытый текст

Выделить код

Код:

window.document.querySelector(".textarea textarea_theme_normal textarea_size_s comment-form__textarea").click()
window.document.querySelector(".comment-form__textarea").click()
window.document.querySelector(".textarea__control").click()


Не работает =(

InfSub

FastSpeed пишет:

Как сюда кликнуть?

А это где?

FastSpeed, как вариант, по своим координатам

скрытый текст

Выделить код

Код:

iimPlay("CODE:CLICK X=745 Y=309");


Там класс вложенного спана меняется при наведении курсора и видимо клик возможен только в фокусе.

Squatter пишет:

FastSpeed, как вариант, по своим координатам

Это не вариант. Также как и EVENT события. Они зависают.
С кликом вообще фигово, там реклама разных размеров на странице и делать кучу кликов не вариант. Так можно и в рекламу попасть.

googlenoob пишет:

А это где?

Коменты ссылок ЯД.

FastSpeed для рекламы достаточно временно кинуть фильтр в адблок. Например

скрытый текст

Плюс, юзерагентом можно поставить какорй-нибудь Windows Phone Browsers и ходить по ссылке вида wr_XXXXXXXXX?pane=comments на форму ответа для мобильных устройств, где рекламы вообще нет. Вариантов масса... ;)

UPD

Вот так будет работать
скрытый текст

Выделить код

Код:

window.document.querySelector('textarea[placeholder="Написать комментарий"]').focus();
window.document.querySelector('textarea[placeholder="Написать комментарий"]').value="TEXT";

//Нажимаем ENTER
var evt = window.document.createEvent("KeyboardEvent");
evt.initKeyEvent ("keypress", true, true, window,0, 0, 0, 0,13, 13); 
window.document.querySelector('textarea[placeholder="Написать комментарий"]').dispatchEvent(evt);

Спасибо огромное, работает!

Ребята, привет! Слушайте, а как аймакрос поставить на навейшую версию фаерфокса Квантум? Там пишет что аймакрос не ставится вообще на новую версию. А я обновился до новой версии. Ну и что теперь делать? Что-то я не в курсе последних событий. Пару лет назад пользовался и фаерфоксом и аймакросами и всё было нормально. Теперь балалайка какая-то. Ничего не понимаю... Что изменилось в последние дни, часы, месяцы?:/

zurterospi
откатить FF на старую версию, запретить обновление
ссылки для скачивания FF есть в FAQ на форуме

добрый день.
есть такая проблема есть цикл на увеличение страниц от 1 до 74   а как правильно написать уменьшение переходы от 74 до 1

скрытый текст

Выделить код

Код:

for(i=1; i<=74; i++){ 
iimPlay("CODE:URL GOTO=https://kolesa.kz/my/?tab=archive&sort_by=date-desc&page="+i+"");
iimDisplay('востановленно  '+ ((i-1)*40))


код публикуется в тегах code под спойлером

InfSub

Добрый день.   как запустить js файл из imm  хром версия.   или куда можно разместить js файл чтобы его потом запустить?  путь к js  C:\iMacros\Macros\востановить.js

stalker50, декремент в цикле

скрытый текст

Выделить код

Код:

for(i=74; i>0; i--){ 
        iimDisplay('востановленно ' + i)
        iimPlay("CODE:PAUSE");
}


В хромовой версии плеер JS файлов не предусмотрен. Юзайте iMacros version 8.9.7 (works with Firefox 30.0 - 49.*)

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

скрытый текст

Выделить код

Код:

for(i=74; i>0; i--){ 
      }


Эту часть кода я понял,  как быть с переходом страниц?

скрытый текст

Выделить код

Код:

iimPlay("CODE:URL GOTO=https://kolesa.kz/my/?tab=archive&sort_by=date-desc&page="+i+"");
      }

добрый день.
Установлены
Mozilla 42.0
iMacros addon for FF 9.0.3
iMacros 10.0.2.2823 (x64)
Windows 7 (x64)
Пишу код в VBA Excel.

работало все месяца 2 нормально, потом я попытался запускать FF(firefox) под разными профайлами и что то сломалось:
при выполнении команды iimOpen("-fx") запускается FF и VBA виснит где то на 30 секунд, потом закрывается FF и возвращается ошибка (i = -9) (http://wiki.imacros.net/Error_and_Return_Codes). Текст ошибки: "TCP interface error: Could not open server pipe \\.\pipe\im-fx-default.Lex"

скрытый текст

Выделить код

Код:

Set iim1 = CreateObject("iMacros")
i = iim1.iimOpen("-fx", True)
aa = iim1.iimGetErrorText() 


переустанавливал FF (чистил реестр, стирал все что находилось на жестком диске, устанавливал 55 версию FF).
переустанавливал iMacros (C:\Program Files\Ipswitch\iMacros)
что могло произойти, что делать?

microbiolog
для начала поставьте нормальную версию iMacros для FF, а именно версию 8.9.7  и запретить обновление, и поддерживающий его FF версий с 30 по 49, так же с запретом обновления
и проверьте, работает или нет

InfSub
удалено, избыточное цитирование
Установил и проверил:
FF 42.0,
iMacros для FF 8.9.7
обновления браузера и плагина отключены. По прежнему iimOpen выдает ошибку -9.

InfSub

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

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

скрытый текст

Выделить код

Код:

for(i=74; i>0; i--){ 
      }
iimPlay("CODE:URL GOTO=https://kolesa.kz/my/?tab=archive&sort_by=date-desc&page="+i+"");
      }


код публикуется в тегах code под спойлером

что делать со второй частью как ее правильно прописать на уменьшение?

InfSub

stalker50,  код в spoiler, не понятно зачем Вам } }.

скрытый текст

Выделить код

Код:

for(i=74; i>0; i--){ 
    iimPlay("CODE:URL GOTO=https://kolesa.kz/my/?tab=archive&sort_by=date-desc&page="+i+"");
}

InfSub пишет:

поставьте нормальную версию iMacros для FF, а именно версию 8.9.7  и запретить обновление, и поддерживающий его FF версий с 30 по 49

IMacros 8.9.7 также не плохо работает в FF 55 и FF 56.

Добрый день.

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

скрытый текст

Выделить код

Код:

почта                                     имЯ_пользователЯ                     пароль
1001maximum+10@mail.ru    Svetlana_vladimirovya_150516    max12345


скрытый текст

Выделить код

Код:

var put = 'C:\\iMacros\\Macros\\Обучение'//путь к таблице
//var url = 'https://www.yandex.ua'//урл где будем вводить почту
var count =5
var tabPoshta = 'Insta.csv';//таблица
var inst;
var n = '\n';
inst ="CODE:";
//inst +="CLEAR" + n ;// очищаем куки, тем самым выходим если залогинены;

 
inst +="SET !DATASOURCE_DELIMITER ;" + n ;// обозначаем разделитель в таблице ;
inst +="CMDLINE !DATASOURCE "+put+"\\"+tabPoshta+ n ; // обозначаем таблицу
inst +="SET !DATASOURCE_COLUMNS 3" + n ; //iMacros количество колонок в этом файле
inst +="SET !DATASOURCE_LINE {{COUNT}} " + "\n"; //из какой строки по счету нужно извлечь информацию
inst += "ADD !EXTRACT {{!COL1}}"+ n ;//почта
inst += "ADD !EXTRACT {{!COL2}}"+ n ;//пользователь
inst += "ADD !EXTRACT {{!COL3}}"+ n ;//пароль
iimPlay(inst)
var poshta = iimGetLastExtract(1);//вытягиваем почту в джаваскрипт
var nic = iimGetLastExtract(2);//вытягиваем почту в джаваскрипт
var pass = iimGetLastExtract(3);//вытягиваем пароль в джаваскрипт
var macroVhod;
macroVhod ="CODE:";
macroVhod += "URL GOTO=https://www.instagram.com/" + n ;//заход на адрес
macroVhod += "TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:NoFormName ATTR=NAME:emailOrPhone CONTENT="+poshta+ n ;//вводим в поле почту
macroVhod += "TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:NoFormName ATTR=NAME:fullName CONTENT="+nic+ n ;//вводим в поле Пользователя
macroVhod += "SET !ENCRYPTION NO"+ n ;//не шифруем пароль
macroVhod += "TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:NoFormName ATTR=NAME:password CONTENT="+pass+ n ;//вводим пароль
macroVhod += "TAG POS=1 TYPE=BUTTON FORM=NAME:NoFormName ATTR=TXT:Sign<SP>up"+ n ;//нажимаем кнопку войти.
iimPlay(macroVhod)

stalker50
открываете свой код и читаете собственные комментарии и сравниваете с текстом файла, который вы пытаетесь читать

stalker50

скрытый текст

InfSub пишет:

открываете свой код и читаете собственные комментарии и сравниваете с текстом файла, который вы пытаетесь читать

inst +="SET !DATASOURCE_DELIMITER ; " + n ;// обозначаем разделитель в таблице ;

PRESIDENT
спасибо, КЭП

07-01-2018 11:43:23
я вообще-то надеялся, что мозгов собственных хватит у stalker50, чтобы найти ошибку

Всем привет!:rock:
Подскажите какую из последних версии мазилы и imacros можно установить?  Замучался экспериментировать,то мазила устарела,то имакрос устарел,и не становиться.

Gergi
на предыдущей странице все написано

Всем привет!:rock:

скрытый текст

Выделить код

Код:

iimPlayCode('WAIT SECONDS=1');


Как реализовать это не в секунды а в минуты?

Gergi умножить на 60?

Aikyaira пишет:

Gergi умножить на 60?

хотелось бы что бы 1 отсчитывало одну минуту а не одну секунду. Для того что бы отсчитать одну минуту мне надо прописать 60 а мне надо прописать 1 а не 60

Gergi
Для того, чтобы отсчитать одну минуту-нужно прописать 60. Откуда цифра 280?
Насколько я знаю, в Imacros нет функционала по отсчитыванию именно минут, команда WAIT принимает только аргумент секунда и ожидание до конца загрузки страницы: http://wiki.imacros.net/WAIT

Gergi

Можно так

скрытый текст

Выделить код

Код:

wait(3);


         /***-= Ожидание =-***/
function wait(s){iimPlayCode('WAIT SECONDS='+Number(s*60));}   

PRESIDENT
Это таки то что мне нужно! СПАСИБО!

Уважаемые! Подскажите  сайт(форум) по изучению NODE js!

dim222
На ютубе много таких видеоуроков

скрытый текст

Делайте еще ветку форума о Katalon Studio.  Это реально крутая вещь. Как прокачанная версия аймакроса)

Duh

offtop
На счет ветки - вряд ли, продукт не имеет ни какого отношения к Mozilla, но могу сделать временно отдельный топик, будет интерес, подумаем, что можно сделать
http://forum.mozilla-russia.org/viewtopic.php?id=73038

Уважаемые ,что делаю не так? Пытаюсь авторизоваться через API на EXMO.

как описано здесь
https://c.radikal.ru/c00/1801/24/0152d85125cb.jpg

скрытый текст

Выделить код

Код:

 X = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");

Key='my key',
Sign='my sign';

x=new X();
x.open('POST','https://api.exmo.com/v1/user_info',false);
x.setRequestHeader('Key', Key);
x.setRequestHeader('Sign', Sign);
x.setRequestHeader('nonce', Date.now());
x.send(null);

 window.console.log(x.response)


ругается на 'nonce'
https://a.radikal.ru/a30/1801/b5/8306bdf0339e.jpg

dim222

скрытый текст

Выделить код

Код:

x.setRequestHeader('nonce', Date.now().toString());

InfSub
Не работает.

через тело запроса тоже не робит

Выделить код

Код:

X = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");

Key='my key',
Sign='my sign';

var v ='nonce='+Date.now().toString();

x=new X();
x.open('POST','https://api.exmo.com/v1/user_info',false);
x.setRequestHeader('Key', Key);
x.setRequestHeader('Sign', Sign);
x.setRequestHeader('Content-type', v.length);
x.send(v);

 window.console.log(x.response)

dim222
да, не внимательно прочел, что в данном конкретном случае подразумевают под nonce...
в вашем описании же, написано, что он должен быть в POST запросе, т.е. быть записан в Sing, а вы его пытаетесь отправить в header'e

InfSub
Разобрался! Спасибо!

Ошибка была в неправильном переводе 'Sing' в 'hmac sha512'.
'nonce' передается параметром в теле запроса.

всем привет. подскажите, как с помощью iMacros проверить наличие на странице элемента с определенным классом, например, если на странице есть элемент 

скрытый текст

Выделить код

Код:

<div class="div1"></div>


записать в переменную check значение true, если его нет на странице, то check=false.

hellish_cat

элементарно находится поиском или читается в офф вики
опция extract

hellish_cat
Если по колхозному то как то так

скрытый текст
выражение записывается так: if(iimPlayCode('TAG POS=1 TYPE=div ATTR=class:div1')>0)

Выделить код

Код:

if(iimPlayCode('TAG POS=1 TYPE=div ATTR=class:div1')>0)
{
check=true;
}
else check=false;


более правильнее примерно так

Исправлено по аннотации модера!!!
скрытый текст

Выделить код

Код:

var check = (iimPlayCode('TAG POS=1 TYPE=div ATTR=class:div1')>0) ? true : false;


А так модер прав, такие мелочи элементарно ищутся по форуму и/или гуглу.

PRESIDENT пишет:

более правильнее примерно так

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

скрытый текст

Выделить код

Код:

var check = (iimPlayCode('TAG POS=1 TYPE=div ATTR=class:div1')>0) ? true : false;

что то не так делаю или чего то не понимаю. код странички простенький:

скрытый текст

Выделить код

Код:

<div class="div1">div1</div>
<div class="div2">div2</div>
<div class="div3">div3</div>
<div class="div4">div4</div>


а вот результат выполнения iMacros
скрытый текст
http://i.piccy.info/i9/175ea87334062dbe7edbfa424cb658dc/1516231607/160898/1213959/Bezymiannyi1.jpg

P.S. Колхозный вариант от PRESIDENT дает тот же результат.

hellish_cat
версия iMacros?

18-01-2018 03:12:53
hellish_cat
как вариант:

скрытый текст

Выделить код

Код:

var check = (iimPlayCode('TAG POS=1 TYPE=div ATTR=class:div5'),iimGetErrorText()=='OK') ? true : false;
iimDisplay(check );

InfSub
результат также true. версия 9,0,3 и фаерфокс пишет. что устаревшее, но проверка обновлений результата не дает

hellish_cat пишет:

версия 9,0,3

установи версию 8.9.7 и запрети обновляться

Здравствуйте
кому-нибудь удалось активировать кнопку подтверждения submit?
или отправить ответ с поля

скрытый текст

Выделить код

Код:

window.document.querySelector('.g-recaptcha-response').textContent = res.request;


если да, поделитесь решением

karginaolga, по рекапче всё в соседнем топике iMacros: Капчи, сохранение и распознавание


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

Squatter

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


на вкладке Faucet

karginaolga пишет:

удалось активировать кнопку подтверждения submit?

Исходя из функции в теле страницы

скрытый текст

Выделить код

Код:

function enableSubmit() { $('#loginSubmit') .removeClass('secondary'); }


Косметически так
скрытый текст

Выделить код

Код:

content.document.querySelector('#loginSubmit').className = 'button right';

Подскажите, что не так?

скрытый текст

Выделить код

Код:

EVENTS TYPE=KEYPRESS SELECTOR="textarea[data-name=\\"uname\\"]" CHARS="user"

darkzp
http://wiki.imacros.net/EVENT

Здравствуйте. Подскажите, есть возможность в ходе работы js-скрипта определять значение TAG POS= у элемента на странице? Если есть, можно пример?

udalov
нет

Печально...
Как, в таком случае, можно сделать перебор значения DIV:nth-of-type(5) по порядку? Т.е. 5,6,7 и т.д?

скрытый текст

Выделить код

Код:

EVENT TYPE=CLICK SELECTOR="#body-container>DIV:nth-of-type(5)>DIV>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>BUTTON:nth-of-type(2)" BUTTON=0


код публикуется в тегах code под спойлером

замечание


InfSub

udalov
через .js

udalov
если нужен именно перебор значений с возрастанием на 1 то как вариант {{!LOOP}} (только для iim скриптов)

udalov, как вариант, получите все нужные вам дивы в пределах элемента или документа

скрытый текст

Выделить код

Код:

var nodelist = content.document.querySelectorAll('div');


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

Выделить код

Код:

for (i=0;i<nodelist.length;i++) { 
        nodelist[i].click();
        iimPlay("CODE:PAUSE");
}

Подскажите, как можно в window.document.querySelector нажать кнопку, её код:

скрытый текст

Выделить код

Код:

<button class="yt-uix-button yt-uix-button-size-default yt-uix-button-primary overlay-confirmation-unsubscribe-button yt-uix-overlay-close" onclick=";return false;" type="button">
    <span class="yt-uix-button-content">
        Отказаться от подписки
    </span>
</button>


Вариант
скрытый текст

Выделить код

Код:

window.document.querySelector(".yt-uix-button yt-uix-button-size-default yt-uix-button-primary overlay-confirmation-unsubscribe-button yt-uix-overlay-close").click(); 


не работает, выдавая ошибку window.document.querySelector(...) is null, line 1 (Error code: -991)

Также не могу понять, почему в нижеследующем коде не срабатывает второй break, когда в цикле for(e = 4; e <= 10; e++) найдена нужная переменная "е" и нажат её элемент, например, 'EVENT TYPE=CLICK SELECTOR="#body-container>DIV:nth-of-type(5). По задумке, после этого цикл должен остановиться и скрипт должен вернуться к циклу for(q = 1; q <= 100; q++), а он крутится дальше, перебирая е=6 и т.д.

скрытый текст

Выделить код

Код:

for(q = 1; q <= 100; q++){
iimSet("q", q);
iimPlayCode('TAG POS='+q+' TYPE=BUTTON ATTR=TXT:ПодписатьсяВы<SP>подписаныОтменить<SP>подписку');

iimPlayCode('SET !TIMEOUT_STEP 0 \n SET !ERRORIGNORE YES \n TAB T=1 \n TAG POS=2 TYPE=DIV ATTR=CLASS:unsubscribe-confirmation-message EXTRACT=TXT');
var w=iimGetExtract();
if(w=='#EANF#'){ break;
    }else{
    for(e = 4; e <= 10; e++){
    iimSet("e", e);
    iimPlayCode('EVENT TYPE=CLICK SELECTOR="#body-container>DIV:nth-of-type('+e+')>DIV>DIV>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>BUTTON:nth-of-type(2)" BUTTON=0');
    break;
}}}


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

udalov пишет:

Также не могу понять, почему в нижеследующем коде не срабатывает второй break

во-первых, уберите else, зачем он там если у вас при срабатывании условия - идет break
во-вторых, из какого цикла вы пытаетесь выйти вторым break? из первого или из второго?
в-третьих, зачем вам iimSet если вы используете конкатенацию строк (вставляете js переменную в текст)

не работает, выдавая ошибку window.document.querySelector(...)

Неправильно селектор указали. Всё гораздо проще. Вот рабочий вариант

скрытый текст

Выделить код

Код:

var nodelist = content.document.querySelectorAll('.yt-uix-subscription-button');
for (i=0;i<nodelist.length;i++) {
        nodelist[i].click();
        iimPlay("CODE:PAUSE");
}


Правильно нажать на форму подтверждения можно так
скрытый текст

Выделить код

Код:

content.document.querySelector('.yt-dialog.preserve-players .overlay-confirmation-unsubscribe-button').click();

InfSub пишет:

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

если я убираю else скрипт не переходит на второй цикл.
выйти вторым break пытаюсь из второго цикла.

udalov
значит вы криво записываете действие, если не переходит, должно быть так:

скрытый текст

Выделить код

Код:

if(w=='#EANF#'){ break;}
for(e = 4; e <= 10; e++){
...


и ни какой else тут не нужен

Squatter уже привел пример, как не городить огород из циклов и event'ов, но все же, по поводу break, какой в нем смысл в вашем цикле, если при такой записи, у вас цикл должен прерваться сразу же, после первого прохода, смысл тогда в условии  e <= 10 ?

InfSub пишет:

Squatter уже привел пример, как не городить огород из циклов и event'ов

Да, благодаря ему все заработало и код стал намного проще.

Здравствуйте! Подскажите пожалуйста, обновилась мозилла и теперь не работает аймакрос :( А сейчас он очень понадобился... Подскажите, что можно сделать в таком случае, чтобы опять заработал?

Почитать форум и правила.

Asia
установить более старую версию и запретить обновления
скачать портативную версию по ссылке из FAQ и использовать ее или их, если нужно одновременно несколько запущенных скриптов

Добрый день.:rock:
Как можно вставить в браузер куки с помощью скрипта? Вручную всё получается но не вариант.


скрытый текст

Выделить код

Код:

alert(window.document.cookie);
iimPlayCode('CLEAR');
iimPlayCode('SET !DATASOURCE_DELIMITER @\nSET !DATASOURCE D:\\dokument.txt\nSET !DATASOURCE_LINE 1\nSET !EXTRACT {{!COL1}}'); 
d2d=iimGetExtract()
function setCookie(name, value, path, domain, secure){
  var s = name+''+encodeURIComponent(value)+';';
 if(path) s+=' path='+path+';';
 if(domain) s+=' domain='+domain+';';
 if(secure)s+=' secure;';
 window.document.cookie=s;
}
setCookie(""+d2d+"", "", 3600);
alert(window.document.cookie);


Я делаю вот так: берёт куки из текстового файла и вставляет в браузер,но откуда то в конце после кук дописывает ; wd=1150x657 если это убрать то думаю должно получиться

Gergi
А чем не устраивает код выложенный Hamzat-ом?
Для этих дел лучше использовать json файл.

dim222
Да там кусок не рабочего кода кинут

Gergi
Грамотный кодер выложил код,а вы говорите ,что он не рабочий. Все дело в прямоте рук
Сейчас доработаю его "специально для тех, кто считает его не рабочим".Выложу

Gergi пишет:

Да там кусак не рабочего кода кинут

думаю здесь все поймешь

Выделить код

Код:

Ci=Components.interfaces,Cu=Components.utils;

URL='mozilla-russia.org'// здесь твой урл.



/* 
Получаем куки и сохраняем в json файл
 */
saveToJSON('D:\\dokument.json',getCookie(URL))

/* 
Вставляем куки
 */
obj = readFromJSON('D:\\dokument.json');
setCookie(obj);


/* 
функция вставки кук
 */
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);
        };
    }

/* 
функция получения кук
 */
function getCookie(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;
    }

/* 
функция записи в json файл
 */
function saveToJSON(fileName, obj) { 
    var fileDescriptor = imns.FIO.openNode(fileName);
    imns.FIO.writeTextFile( fileDescriptor, JSON.stringify(obj, null, 4) );        
};

/* 
Читаем из формата JSON
 */
function readFromJSON(fileName) {
    var fileDescriptor = imns.FIO.openNode(fileName);
    var text = imns.FIO.readTextFile(fileDescriptor);    
    var obj = JSON.parse(text);
    return obj;
};

dim222
Спасибо,но тоже что то мне не понятно :( Он создаёт файл,вытаскивает в него куки. А мне надо что бы он брал куки уже из заготовленного мною файла с куками,зачем он вытаскивает куки?
Короче весь прикол в том что бы например вконтакте я входил через куки которые у меня уже есть а не через логин и пароль.

31-01-2018 22:00:35
Я вот например установил в мазиле дополнение

скрытый текст

Выделить код

Код:

https://addons.mozilla.org/firefox/addon/likepusher-cookies/


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

Gergi
Какой ты трудный.
тебе уже все функции в кучу собрали, на тарелочке с голубой каёмочкой подали.:(


dim222

Не мечите бисер перед свиньями...
Евангелии от Матфея, 7 глава 6 стих

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

Gergi пишет:

Да там кусак не рабочего кода кинут

PRESIDENT пишет:

тебе уже все функции в кучу собрали, на тарелочке с голубой каёмочкой подали

Код красивый но не рабочий! Ладно не надо эту тему ворошить,и так два дня на это потратил.

Gergi пишет:

два дня на это потратил.

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

Gergi
если, лично вы, не можете допилить данный код, под ваши нужды, это не значит что код нерабочий, это значит только одно, о чем, лично вам, здесь, говорилось многократно, как минимум мной: учите мат. часть

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

это же касается и подобных фраз:

Gergi пишет:

Да там кусак не рабочего кода кинут

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

Ребят, подскажите! Пытаюсь получить HmacSHA512 с сервера (файл php).Все бы ничего ,но из-за знака"&" передаваемого через параметр "message",не выходит.
Как можно это решить?

скрытый текст

Выделить код

Код:

 X = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");

  var secret_key='key',
      message='ключ=значение&ключ=значение&время в сек.';    

    
     x = new X(); 
        x.open('GET', 'http://HmacSHA512.ru/sha512.php?secret='+secret_key+'&string='+message+'', false);
        x.send(null);
        window.console.log(x.response);

dim222
судя по коду, у вас не верный формат данных
не может быть ключ быть равен строке вида "ключ плюс значение"
читайте документацию
предположу, что &, возможно, должен быть записан в html-формате, т.е. как: &amp;

если в самом файле пхп прописываю"string"(пример: limit=100&offset=0&ит.д)то все робит. А как запросом правильно сделать,не пойму.

файл пхп

Выделить код

Код:

<?php 
$string=filter_input(INPUT_GET,'string'); 
$secret=filter_input(INPUT_GET,'secret'); 
echo hash_hmac('sha512', $string, $secret) 
?>

dim222
я уже сказал, замени & на &amp; в значении переменной message
а потом, разве отладку кто-то отменил? не уж то строку вида:

скрытый текст

Выделить код

Код:

echo $_GET['string'];


в php-файл прописать сложно и посмотреть, в каком виде прилетает?

Здравствуйте. Поделитесь, если у кого есть готовый вариант скрипта для поиска и сохранения в файл всех емайлов на странице.

udalov
а чем поиск через регулярные выражения не устраивает?

10-02-2018 05:16:33
dim222 получилось?

InfSub пишет:

dim222 получилось?

Вообще-то нет!(Выдает один и тот же хеш при Date.now() ) И как посмотреть что приходит в пхп я так и не понял. Я так понял, "message" воспринимается не как содержимое "string" (из-за знака '&'), а как перечисление параметров запроса.

dim222 пишет:

я так и не понял

http://www.kolobok.us/smiles/light_skin/dash3.gif

dim222 пишет:

как посмотреть что приходит в пхп я так и не понял

скрытый текст

Выделить код

Код:

<?php 
$string=filter_input(INPUT_GET,'string'); 
$secret=filter_input(INPUT_GET,'secret'); 
echo 'string: '.$string.'<br>secret: '.$secret.'<br>';
echo hash_hmac('sha512', $string, $secret); 
?>


dim222 пишет:

из-за знака '&'

скрытый текст

Выделить код

Код:

var secret_key='key',
      message='ключ=значение&amp;ключ=значение&amp;время_в_сек.';


разве так сложно?

10-02-2018 23:13:54
dim222
собственно что вы велосипед изобретаете?
передайте нормально каждый из параметров, а не пытайтесь их впихнуть в переменную secret и формируйте запрос уже на уровне php, объединив нужные переменные

или опять не понятно о чем речь?

InfSub
Набираю в поисковике

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


И без разницы "&" или "&amp;" в "string" попадает до первого "&".
получаю
string: limit=100
secret: hhijhiyjpjykjkjuklulj
643726e7c90110e29beceb60093839e0fc8d69108144ffbf84973e9c3a3dbb882b1067bb7e83fa3dd63f73ab537c5b9016044f22375451175cfadf4bf00570cc

11-02-2018 08:15:06

InfSub пишет:

dim222
собственно что вы велосипед изобретаете?
передайте нормально каждый из параметров, а не пытайтесь их впихнуть в переменную secret и формируйте запрос уже на уровне php, объединив нужные переменные

Параметры разные надо передавать, в зависимости от операции.
Это будет уже костыль.

InfSub
Имеется файл .js

возвращает нужный хеш

Выделить код

Код:

    function sign(message){
        return CryptoJS.HmacSHA512(message, config.secret).toString(CryptoJS.enc.hex);
    }


через html все робит

Выделить код

Код:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>HmacSHA512</title>
    <div id="result"></div>
</head>
<body onLoad="window_onload()">

<script src="file:///C:/Users/dima/bower_components/crypto-js/crypto-js.js"></script>
<script type="text/javascript">
    var config = {
        key:'jhjhjhjhjh',
        secret:'iip[pm,nmnm'
    };

    function init() {
        config.nonce = new Date().getTime();    
    }

    function sign(message){
        return CryptoJS.HmacSHA512(message, config.secret).toString(CryptoJS.enc.hex);
    }

    function serialize(obj) {
        var str = [];
        for(var p in obj)
            if (obj.hasOwnProperty(p)) {
                str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
            } console.log(str.join("&"));
        return str.join("&");
    }


    function api(data, callback){
        data.nonce = config.nonce++;
       var post_data = serialize(data);
            callback(sign(post_data));
               }

    function window_onload() {
        init();
        var div = document.getElementById("result");
        api( {limit:100, offset:0}, function(data){
            console.log(data);
            div.innerHTML += '<p>' + data+ '</p>';
            
         
        });
    }
</script>
</body>
</html>


Подскажите , если я этот файл закину на сервер ,что прописать в PHP (я в нем вообще полный 0)?

InfSub пишет:

dim222
замени & на &amp;

Помогла замена на '%26'.

dim222
hmacsha512 - что за сайт такой, у меня ни разу так и не открылся, вы с ним работаете или свой скрипт пишете?
какая вам разница что будет обрабатывать ваш код на сайте, js или php? работать будет и то и другое - разберитесь с get'ом иначе так и будете изобретать велосипед
все передается скопом в виде отдельных параметров, без запихивания в переменную string (при отправке), дальше на стороне сервера, с помощью js или php собираете в переменную string все кроме secret - простейшая задача

11-02-2018 11:49:31
для примера, ваш же код приведенный выше (php):

скрытый текст

Выделить код

Код:

<?php 
$limit=filter_input(INPUT_GET,'limit'); 
$offset=filter_input(INPUT_GET,'offset'); 
$nonce=filter_input(INPUT_GET,'offset'); 
$secret=filter_input(INPUT_GET,'secret');

$string=$limit . '&' . $offset . '&' . $nonce;
echo hash_hmac('sha512', $string, $secret) 
?>


это просто пример, разобрать строку url'а можно и с помощью parse_str() и еще десятком различных способов, в зависимости от ситуации

при этом строка, которая должна отправляться:
скрытый текст

Выделить код

Код:

http://ваш_домен/скрипт.php?limit=100&offset=0&nonce=1518325313827&secret=hhijhiyjpjykjkjuklulj


и ни каких велосипедов с попыткой впихнуть в одну переменную - несколько

InfSub пишет:

hmacsha512 - что за сайт такой

Локальный сервер.

Спасибо за внимание! Разобрался, все работает.

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

Вот сам код:

Выделить код

Код:

var macros
macros =  "CODE:";
macros += "REFRESH" + "\n";
macros += "TAG POS=1 TYPE=STRONG ATTR=CLASS:total-price EXTRACT=TXT" + "\n";
iimPlay(macros);
var price = iimGetLastExtract();   
alert (price)


Он то выводит 

Выделить код

Код:

 US $200.00

Но как убрать   US $ ?


Делал так в конце:

Выделить код

Код:

var totalprice = parseInt(price.replace(/\D+/g,""));
alert(totalprice)


Он ест-но сносит всё, кроме цифр, но когда другие переменные пробовал, то iMacros вообще не хочет с ними запускаться.

Antor пишет:

Но как убрать

скрытый текст

Выделить код

Код:

.replace(/[^\d\.]/g, '');

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

скрытый текст

Выделить код

Код:

iimPlay("CODE:REFRESH");
var sum = content.document.querySelector(".total-price").textContent.match(/\d+/g);
alert(sum);//Выведет 200,00


Или собираем точнее так с учётом точки
скрытый текст

Выделить код

Код:

iimPlay("CODE:REFRESH");
var sum = content.document.querySelector(".total-price").textContent.match(/\d+\.\d+/g);
alert(sum);//Выведет 200.00

Доброе время суток, подскажите что не так делаю.

скрытый текст

Выделить код

Код:

var сaptcha = (function(){function a(h,j){var k=c['@mozilla.org/xmlextras/xmlhttprequest;1'].createInstance();return k.open('POST',h,!1),k.setRequestHeader('Content-Type','application/x-www-form-urlencoded'),k.send(j),k.responseText}var c=Components.classes,g={};return g.standartAntiCaptcha=function(h,j){var k={clientKey:h,task:{type:'ImageToTextTask',body:j}},l=JSON.parse(a('https://api.anti-captcha.com/createTask',JSON.stringify(k)));*


скрытый текст

Выделить код

Код:

var base64 = window.document.querySelector('#go').querySelector('img.captcha').src;
var res = captcha.standartAntiCaptcha(apiKey, encodeURIComponent(base64));
alert(l.errorId); //15


Формат капчи не распознан по EXIF заголовку либо не поддерживается. Допустимые форматы: JPG, GIF, PNG

darkzp
по вопросам связанным с капчей - есть отдельная тема

подскажите как вывести захваченную группу, раньше вроде так работало

скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("var x=\"{{!EXTRACT}}\"; x=x.match(/лишний текст(начало нужного текста[\s\S]+конец нужного текста)лишний текст/g,\"$1\");")


а сейчас выводит все что подходит под match, а не только захваченную группу, через replace работает, но тогда весь лишний текст надо под регулярку подгонять

stanny, так работал replace, а не match

stanny, это вариант для replace, а не для match. Предлагается менять весь паттерн на кусок, заключённый в запоминающие скобки. Причём текст за пределами паттерна будет попадать в результат, а самое неприятное, если совпадений с шаблоном не будет, то в результат попадёт весь текст, т.к. replace ничего не заменит.
Гуглите как работать с запоминающими скобками. В массив результатов первым делом идёт весь паттерн без учёта скобок с индексом [0], далее то, что заключено в каждой запоминающей скобке с соответствующими индексами от [1] до [n] согласно последовательности применения этих скобок слева направо.

скрытый текст

Выделить код

Код:

var str = "через replace работает, но тогда весь лишний текст надо под регулярку подгонять";

    var parse = str.match(/работает, (но) тогда (весь) лишний текст/);

    alert(parse);//Результирующий массив => ['работает, но тогда весь лишний текст','но','весь']
    alert(parse[0]);//Паттерн без учёта скобок => 'работает, но тогда весь лишний текст'
    alert(parse[1]);//Первая запоминающая скобка => 'но'
    alert(parse[2]);//Вторая запоминающая скобка => 'весь'


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

Выделить код

Код:

var str = "через replace работает, но тогда весь лишний текст надо под регулярку подгонять";
    var parse = str.match(/работает,([\s\S]*)лишний текст/);
    alert(parse[1]);//=> 'но тогда весь'


но регулярка естественно будет работать без флага полнотекстного поиска всех совпадений 'g'
скрытый текст

Выделить код

Код:

var regex = /начало границы поиска([\s\S]*)конец границы поиска/;

Squatter пишет:

но тогда весь лишний текст надо под регулярку подгонять

[\s\S]* - "спасет вождя мирового пролетариата" (с) и ни чего подгонять не придется
как уже сказал выше, скорее всего stanny просто перепутал функции

InfSub пишет:

[\s\S]* - "спасет вождя мирового пролетариата" (с) и ни чего подгонять не придется

не всегда подходит, например "какойто текст текст который нужен " так [\s\S]*(текст[\s\S]+) в груп 1 будет  "текст который нужен" , а так (текст[\s\S]+) "текст текст который нужен " , т.е. с [\s\S]* будет брать с последнего совпадения, а без него с первого

https://regexr.com/

stanny
я не говорил о частностях
в той или иной ситуации рег выражение может в корне отличаться

Squatter пишет:

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

ну так я это и хочу получить, но чисто в ймакросе
P/s : нашел решение

скрытый текст

Выделить код

Код:

Set !Var1 Eval("var exp = '{{!extract}}'.match(/(начало строки[\s\S]+)лишний текст/); exp[1];")


выводит только то что задано в захваченной группе

InfSub пишет:

как уже сказал выше, скорее всего stanny просто перепутал функции

Ну будет он в replace обрезать лишний текст с по-ю набора [\s\S]*. Как я уже сказал, тогда в случае отсутствия совпадений с паттерном в результат попадёт весь текст, т.к. replace ничего не заменит. ИМХО сомнительное удовольствие, как и вся идея с реплейсом.

Уж лучше тогда циклом через exec собирать

скрытый текст

Выделить код

Код:

var str = "-#11111#-#22222#-#33333#-#44444#-";
var reg = /#([\s\S]+?)#/g;
var match, parse = '';
while ((match = reg.exec(str)) !== null) {
        parse += match[1] + "\r\n";
        alert(match[1]);
}
alert(parse);


Это просто для примера. Понятно, что для приведённой строки решается проще
скрытый текст

Выделить код

Код:

var str = "-#11111#-#22222#-#33333#-#44444#-";
alert(str.match(/[^-#]+/g));


stanny пишет:

P/s : нашел решение

Это подходит только для первого совпадения без флага 'g', уже говорил.
Если хотите полнотекстовый поиск со сбором всех совпадений без включения границ поиска, то смотрите вариант выше с циклом и exec.

P.S. stanny, а вообще в 90% случаев достаточно использования querySelectorAll, чтобы не было необходимости громоздить экстракты и регулярки в EVAL. ;)

Squatter
для глобал можно через задницу сделать :)

скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("\"{{!extract}}\".match(/(начало строки[\s\S]+)лишний текст/g, \"$1\").replace(/лишний текст/g, \"\");")

Если не глобальный поиск и нужно только первое совпадение, тогда смысл танцев с EVAL вообще непонятен. Ведь можно писать регулярки в SEARCH напрямую.

скрытый текст

Выделить код

Код:

URL GOTO=https://forum.mozilla-russia.org/viewtopic.php?pid=754277#p754277
SEARCH SOURCE=REGEXP:"глобал([\s\S]+?)через" EXTRACT="$1"
PROMPT {{!EXTRACT}}

Squatter пишет:

Ведь можно писать регулярки в SEARCH напрямую.

блин, это что выходит я зря все время обрезанием занимался :lol:
а с пробелами как его подружить ?? вместо пробела нужно точку ставить чтобы ошибки не было

скрытый текст

Выделить код

Код:

SEARCH SOURCE=REGEXP:"для.глобал([\s\S]+?)через" EXTRACT="$1"

\s пробельный символ

скрытый текст

Выделить код

Код:

SEARCH SOURCE=REGEXP:"для\sглобал([\s\S]+?)через" EXTRACT="$1"


Гуглите про классы и спецсимволы
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Squatter пишет:

\s пробельный символ

знаю, но обычно оно и с обычным пробелом работает

Ребята, привет! Подскажите скрипт чтоб сохранять все картинки страницы сайта в файл? Например эта страница

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


как сделать чтоб скрипт сохранял не одну какую-то картинку, а сразу все какие есть в файл?

Как понять в файл? Может в папку!

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

genstrijen, стандартной командой SAVEITEM

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Squatter
так этой командой делается скриншот! А зачем мне скриншот? Мне надо весь элемент целиком! То есть картинки, находящиеся на странице сайта целиком! а не в виде какого-то скриншота.

Скрипт для вашего сайта. Может его подправят местные старожилы быстро собрал на коленках. Собирает картинки в постах и пройдет страницы заданные в for(a=1;a<=2521;a++).

скрытый текст

Выделить код

Код:

function parser()
{
    for(i=1;; i++)
    {
    iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg');
    //var a=iimGetLastExtract();
    if(iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg')<0) break;
    iimPlay("D:\\iMacros\\parsing-on\\parsing-jpg.iim");
    }
}

for(a=1;a<=2521;a++){
    parser(); 
 if(iimPlayCode('SET !TIMEOUT_PAGE 30\nSET !TIMEOUT_STEP 0\nTAG POS=1 TYPE=A ATTR=TXT:'+a+'')<0) break;
}


Содержимое parsing-jpg.iim

скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES
SET !REPLAYSPEED MEDIUM
SET !TIMEOUT_PAGE 30
TAB T=1
'URL GOTO=https://forum.onliner.by/viewtopic.php?t=919197&start=0
ONDOWNLOAD FOLDER=C:\CAPCHA\test-pars-jpg\ FILE=+_{{!NOW:yyyymmdd_hhnnss}} WAIT=YES
TAG POS={{!LOOP}} TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg CONTENT=EVENT:SAVEPICTUREAS


При тесте прошёл 3 стр и собрал все картинки что были.

genstrijen, читайте тут про разницу команд

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


SAVEITEM извлекает из кеша браузера, что само собой быстрее.

---UPD
googlenoob, касательно {{!NOW:yyyymmdd_hhnnss}} заметил, что сохранение маленьких картинок может происходить в десятые доли секунды, поэтому тут либо "fffff" дописывать к формату времени, если такое возможно(не проверял), либо генерить рандомное имя. В противном случае в цикле будет давать файлам одинаковое имя и соответственно перезаписывать их.

Вот проще вариант
скрытый текст

Выделить код

Код:

var nodelist = content.document.querySelectorAll('img');
for (i=1;i<=nodelist.length;i++) {
       iimPlay("CODE:ONDOWNLOAD FOLDER=C:\download\ FILE=00"+i+"-"+Math.floor(Math.random()*100000)+" WAIT=YES\nTAG POS="+i+" TYPE=IMG ATTR=SRC:* CONTENT=EVENT:SAVEITEM");
}


Будет скидывать все картинки со страницы без учёта расширения. А вообще лучше оставлять родные имена файлов FILE=* иначе будет копировать дубли. В идеале делать проверку совпадений с именами уже сохранённых файлов.

Не подскажите команду в командной строке, которая останавливает скрипт в браузере Mozilla?

vadimka0216
только завершение процесса самой мозиллы, иначе через консоль ни как не остановить

googlenoob

googlenoob пишет:

Скрипт для вашего сайта. Может его подправят местные старожилы быстро собрал на коленках. Собирает картинки в постах и пройдет страницы заданные в for(a=1;a<=2521;a++).

скрытый текст

Выделить код

Код:

function parser()
{
    for(i=1;; i++)
    {
    iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg');
    //var a=iimGetLastExtract();
    if(iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg')<0) break;
    iimPlay("D:\\iMacros\\parsing-on\\parsing-jpg.iim");
    }
}

for(a=1;a<=2521;a++){
    parser(); 
 if(iimPlayCode('SET !TIMEOUT_PAGE 30\nSET !TIMEOUT_STEP 0\nTAG POS=1 TYPE=A ATTR=TXT:'+a+'')<0) break;
}


Содержимое parsing-jpg.iim

скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES
SET !REPLAYSPEED MEDIUM
SET !TIMEOUT_PAGE 30
TAB T=1
'URL GOTO=https://forum.onliner.by/viewtopic.php?t=919197&start=0
ONDOWNLOAD FOLDER=C:\CAPCHA\test-pars-jpg\ FILE=+_{{!NOW:yyyymmdd_hhnnss}} WAIT=YES
TAG POS={{!LOOP}} TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg CONTENT=EVENT:SAVEPICTUREAS


При тесте прошёл 3 стр и собрал все картинки что были.


что-то не получается у меня реализовать эти два скрипта совместно. Вот если использую parsing-jpg.iim просто, в смысле без .js , а только задаю количество циклов (например 300), то все картинки собирает сразу, как положено со всей страницы:
скрытый текст
http://fxpics.ru/images/2018/02/23/Screenshot-37.jpg

а вот если использую написанный вами ява-скрипт и в нём как и положено указую свой путь кparsing-jpg.iim, то оно срабатывать-то срабатывает, да только скрипт parsing-jpg.iim собирает одну и ту же картинку со страницы несколько раз, потом ява-скрипт переходит на следующую страницу и там начинает собирать картинки, но опять же собирает одну и ту же картинку несколько раз и так далее. Что не так?

genstrijen
{{!LOOP}} не работает при запуске из js

InfSub пишет:

{{!LOOP}} не работает при запуске из js

вот и я склоняюсь к этой причине. Дак а как  тогда сделать чтоб все работало как надо? А то googlenoob пишет что тестировал 3 страницы и всё нормально, все картинки скачались... А оно оказывается {{!LOOP}} не работает при запуске из js. Так как у него тогда скачались три станицы картинок? :sick:

genstrijen
открыть FAQ и прочитать, например

InfSub пишет:

{{!LOOP}} не работает при запуске из js

вообще-то там из js запускается iim, а сам по себе iim работает отлично у меня, картинки все по порядочку выкачует из сайта как надо.

а в связке с js скриптом не работает как надо. Значит надо переделывать js-скрипт? да?

genstrijen пишет:

вообще-то там из js запускается iim, а сам по себе iim работает отлично у меня

я разве сказал, что {{!LOOP}} не работает при запуске iim-скрипта напрямую? {{!LOOP}} не работает при запуске из js в любой форме, в форме кода или скрипта, неважно

genstrijen пишет:

а в связке с js скриптом не работает как надо. Значит надо переделывать js-скрипт? да?

Вам повторить еще раз? Информация, в доступном виде, изложена в FAQ в данном разделе (о работе {{!LOOP}}), Вам осталось ее прочесть и применить на практике, заменив одну переменную на другую и используя доп. функцию для передачи значения или вообще уйти от iim написать все в js, что будет как минимум короче
Вам так же был предложен вариант Squatter'ом, который более оптимален

genstrijen пишет:

А оно оказывается {{!LOOP}} не работает при запуске из js. Так как у него тогда скачались три станицы картинок?

прочтите что такое {{!LOOP}} и вопрос "как" отпадет сам собой, как невозможный... Что и как там тестировал googlenoob, я не знаю, свечку не держал, но явно работало не с использованием {{!LOOP}}

InfSub пишет:

Вам так же был предложен вариант Squatter'ом, который более оптимален

а чем он оптимален? Я пробовал его вариант, там надо чтоб страница полностью загрузилась с картинками. А вот при том варианте, который googlenoob предложил, там можно вообще всё что можно отключить блокировщиком рекламы или другими блокировщиками и все равно картинки загружаются те что надо, а не все подряд, как в варианте Squatter.

genstrijen
не устраивает, в чем проблема переделать код под себя используя оба предложенных варианта?

так сложно переписать код в что-то подобное?:

скрытый текст

Выделить код

Код:

var a=1,i;
while(iimPlayCode('FILTER TYPE=IMAGES STATUS=ON\nURL GOTO=https://forum.onliner.by/search.php?type=uposts&id=73770&start='+(((a++)-1)*20))==1){
    i=1;
    while(iimPlayCode('ONDOWNLOAD FOLDER=* FILE=* WAIT=YES\nTAG POS='+(i++)+' TYPE=IMG ATTR=SRC:*content.onliner.by/forum/* CONTENT=EVENT:SAVEPICTUREAS')==1);
};


код не тестировал, взял то что было предложено выше, убрав избыточность и косяки

добавлена поддержка https

genstrijen пишет:

там надо чтоб страница полностью загрузилась с картинками.

в обоих вариантах страница грузится полностью, кто мешает заменить saveitem на savepictureas?

genstrijen пишет:

а не все подряд, как в варианте Squatter

Ограничение по домену не оговаривалось. Просили все картинки со страницы, то и получили вместе с дублями. :)

InfSub, или так

скрытый текст

Выделить код

Код:

iimPlayCode("URL GOTO=https://forum.onliner.by/viewtopic.php?t=919197&start=0")
do {
    var i=1;
    while(iimPlayCode('ONDOWNLOAD FOLDER=* FILE=* WAIT=YES\nSET !TIMEOUT_STEP 1\nTAG POS='+(i++)+' TYPE=IMG ATTR=SRC:*//content.onliner.by/forum/* CONTENT=EVENT:SAVEPICTUREAS')==1){ iimDisplay(i-1); };
} while (iimPlayCode("SET !TIMEOUT_STEP 1\nEVENT TYPE=CLICK SELECTOR=\".page-next>a\"")==1);


Т.е. можно не расчитывая айдишники ссылок стартовать скрипт с любой страницы благодаря пагинации .page-next.

P.S. На последних страницах ссылки на картинки уже по https, поэтому подправил.

Я делаю управляющие скрипты, а сам imacros остальное мне так проще пока! Исправил скрипт, теперь собирает то, что надо.

Управляющий на JS

скрытый текст

Выделить код

Код:

function parser()
{
    for(i=1;; i++)
    {
    //iimSet("VAR6",i)
    iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:*//content.onliner.by/forum/*/*/*/*/*.jpg');
    //var a=iimGetLastExtract();
    if(iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:*//content.onliner.by/forum/*/*/*/*/*.jpg')<0) break;
    iimSet("VAR6",i)
    iimPlay("D:\\iMacros\\parsing-on\\parsing-jpg.iim");
    }
}

for(a=1;a<=2521;a++){
    parser(); 
 if(iimPlayCode('SET !TIMEOUT_PAGE 120\nSET !TIMEOUT_STEP 0\nTAG POS=1 TYPE=A ATTR=TXT:'+a+'')<0) break;
}


Содержимое parsing-jpg.iim

скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES
SET !REPLAYSPEED MEDIUM
SET !TIMEOUT_PAGE 30
TAB T=1
'URL GOTO=https://forum.onliner.by/viewtopic.php?t=919197&start=0
ONDOWNLOAD FOLDER=C:\CAPCHA\test-pars-jpg\ FILE=+_{{!NOW:yyyymmdd_hhnnss}} WAIT=YES
TAG POS={{!VAR6}} TYPE=IMG ATTR=SRC:*//content.onliner.by/forum/*/*/*/*/*.jpg CONTENT=EVENT:SAVEPICTUREAS

Squatter пишет:

P.S. На последних страницах ссылки на картинки уже по https, поэтому подправил.

да, поправил выше в коде

InfSub пишет:

vadimka0216
только завершение процесса самой мозиллы, иначе через консоль ни как не остановить

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

vadimka0216
все зависит от того, чего вы пытаетесь добиться
вариантов 2: перезапустить браузер, перезапустить скрипт, оба варианта описаны в faq, хоть и кратко

InfSub
удалено, избыточное цитирование
Я пытаюсь сделать безопасную для браузера Mozilla перезагрузку сервера, но при 3-4 таких перезагрузках у меня он падает. А ручками я не хочу перезапускать или выключать скрипт

InfSub

vadimka0216 пишет:

перезагрузку сервера

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

InfSub
удалено, избыточное цитирование
Но, а как же очищать физ.память, накопленную браузером?

InfSub

vadimka0216
а с какого времени перезагрузка ПК стала что-то очищать?
ищите по разделу, тут народ приводил примеры cmd- и js-скриптов, очищающих кэш браузера и корректно завершающих его работу (js)

25-02-2018 21:52:00
вот пара примеров из FAQ:
https://forum.mozilla-russia.org/viewto … 74#p695674
https://forum.mozilla-russia.org/viewto … 44#p737944

Здравствуйте. Вот такое окошко о чём может говорить? Проблема с совместимостями версий браузера\аймакроса и команд в iim-макросе? Мешают другие плагины?

скрытый текст
https://pp.userapi.com/c840333/v840333559/6453d/IXskt4LFKwY.jpg

Версия фаерфокса 56.0.2 64 бит ,  Imacros 8.9.7 .
И ещё, тут вроде упоминалось о том, почему работа макроса зависает на строке с командой CMDLINE !DATASOURCE data.txt , но я не пока не нашёл. Пути к файлу кирилицей не должны же на такое влиять? На одном компе работает, на другом на этой команде стопорится.

udalov
если лиса портабельная попробуй полностью ее скопировать с того компа, где работает
скрипты и файл с данными тоже, скорируй без изменений, возможно при изменении меняется кодировка, к примеру
а так - сложно сказать, в основном такое встречается редко и зависит от конфигурации лиса

Здравствуйте. Подскажите пожалуйста.
Есть 3 базы. Работая в цикле, данные из файла берутся по порядку. А как можно сделать, что бы бралось рандомно?

скрытый текст

Выделить код

Код:

SET !REPLAYSPEED FAST
SET !ERRORIGNORE YES
SET !DATASOURCE_DELIMITER ;
SET !DATASOURCE NamesALL.csv
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
SET !REPLAYSPEED SLOW

TAG POS=1 TYPE=A ATTR=TXT:Messages
TAG POS=1 TYPE=A ATTR=TXT:New<SP>Message
TAG POS=1 TYPE=SPAN ATTR=TXT:{{!COL1}}


SET !REPLAYSPEED FAST
SET !ERRORIGNORE YES
SET !DATASOURCE_DELIMITER ;
SET !DATASOURCE TextForPosts.csv
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
SET !REPLAYSPEED SLOW

TAG POS=1 TYPE=TEXTAREA FORM=ACTION:/messages/send/?icm=1 ATTR=NAME:body CONTENT={{!COL1}}

SET !REPLAYSPEED FAST
SET !ERRORIGNORE YES
SET !DATASOURCE_DELIMITER ;
SET !DATASOURCE URL.csv
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
SET !REPLAYSPEED SLOW

URL GOTO={{!COL1}}

SP_Sasha
открыть FAQ и прочесть как задать рандомное значение

InfSub
удалено, избыточное/бесполезное цитирование
Я это сделал в первую очередь, но у меня не получалось. Вставляется только рандомное число от 1-9, а нужно что бы вставлялся рандомно текст из списка в файле. Сделал вот так

скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES
SET !DATASOURCE_DELIMITER ;
SET !DATASOURCE TextForPosts.csv
SET !DATASOURCE_COLUMNS 1
SET !DATASOURCE_LINE {{!VAR1}}
SET !VAR1 EVAL ("Math.floor(Math.random()*8 + 1);")
TAG POS=1 TYPE=TEXTAREA FORM=ID:composer_form ATTR=NAME:body CONTENT={{!VAR1}}


InfSub

SP_Sasha
а голову включить?
зачем вам рандомный номер вместо текста? куда вы дели {{!COL1}} или команда возвращающая рандомное число вам и текст из файла прочитать должна и кофе с пирожками с постель принести за одно?
что такое SET !DATASOURCE_LINE прочтите еще раз

InfSub
Понял где ошибся. Спасибо.

скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES
SET !DATASOURCE_DELIMITER ;
SET !DATASOURCE TextForPosts.csv
SET !DATASOURCE_COLUMNS 1
SET !VAR1 EVAL ("Math.floor(Math.random()*8 + 1);")
SET !DATASOURCE_LINE {{!VAR1}}
TAG POS=1 TYPE=TEXTAREA FORM=ID:composer_form ATTR=NAME:body CONTENT={{!COL1}}

SP_Sasha
про SET !DATASOURCE_COLUMNS тоже читайте, зачем оно вообще? ФФ и без него норм все определяет

Подскажите пожалуйста, макрос имеет урезанный функционал, кругов только 100 ,строк 50? Есть ли лекарство где то?

V.K.L
а можно задать вопрос так, чтобы вас поняли?
в iMacros для Firefox нет ни каких ограничений, если не считать рекомендации, не использовать iim-скрипты длиннее 2500 строк и ограничение по циклам, опять же для iim-скриптов, по-моему около миллиона (999999 если мне память не изменяет)

InfSub Простите, не очень правильно сформулировал свой вопрос.
Я почему спрашивал, макрос на хроме, дает только 50 строчек и 100 кругов. Так как бесплатный.
Получается надо переходить на лисичку))

V.K.L
ни чего не скажу про хром, пробовал несколько лет назад, но на сколько знаю, там ни чего не поменялось
основная проблема iMacros для хрома, отсутствие поддержки js или иных языков программирования, позволяющих, строить условия и ветвить скрипт в зависимости от них
по этому, да, переход на лису - оптимален

Возникло еще пару вопросов?
Можно ли в лисе, запустить  несколько макросов для каждой странички?
На страничке 10 рекламных баннеров, мне надо на них нажимать, создал макрос, все работает. Но вчера были банеры под одной ссылкой сегодня под другой, естественно ошибка. Можно ли в макросе привязать не к ссылке а скажем как то иначе, баннеров всегда 10?
Спасибо!

V.K.L
Изменяемую часть замени звездочкой.


InfSub
Какую посоветуешь не тяжёлую мазилку и версию имакроса к ней.
Перебрал с 49 по 56, это просто ужас, других слов нету. :angry:

PRESIDENT
попробуй 35.х.х я в последнее время больше WaterFox юзаю, вроде как пошустрее чем FF

PRESIDENT
Дико извиняюсь, согласен что книгу писать нет смысла но все же, если не затруднит что заменить звездочкой?
И я задал два вопроса, Вы предлагаете ответ на какой вопрос?:(

V.K.L пишет:

Можно ли в лисе, запустить  несколько макросов для каждой странички?

поочередно - да, одновременно - нет (для одного окна)
можно только в разных окнах, но не вкладках

V.K.L пишет:

Можно ли в макросе привязать не к ссылке а скажем как то иначе, баннеров всегда 10?

выше ответил PRESIDENT

Кто сталкивался, подскажите пожалуйста, какой параметр правильно указывать в expiry_date для  сессионной cookie

скрытый текст

Выделить код

Код:

Services.cookies.add(".host.example.com", "/cookie-path", "cookie_name", "cookie_value", is_secure, is_http_only, is_session, expiry_date);

Описание тут

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Атрибуты описаны тут
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Если ничего не ставить в expiry_date, то куки не ставится

Ставлю так
is_session = true
expiry_date = Date.now()

скрытый текст

Выделить код

Код:

Services.cookies.add(".host.example.com", "/cookie-path", "cookie_name", "cookie_value", false, false, true, Date.now());


Всё ставится, но правильно ли это? По логике при is_session = true

expiry_date вообще можно не указывать, но так не работает.

Ребята нужна помощь, не получается написать скрипт, для игр с этого сайта

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


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

Выделить код

Код:

VERSION BUILD=9030808 RECORDER=FX
TAB T=1
URL GOTO=https://cointiply.com/games
TAG POS=1 TYPE=IMG ATTR=SRC:https://img.cdn.famobi.com/portal/html5games/images/tmp/180/YetiSensationTeaser.jpg
FRAME F=2
TAG POS=1 TYPE=DIV ATTR=CLASS:btn-play&&TITLE:&&TXT:
TAG POS=1 TYPE=CANVAS ATTR=WIDTH:718&&HEIGHT:538&&TXT:
TAG POS=1 TYPE=DIV ATTR=CLASS:btn-play&&TITLE:&&TXT:
TAG POS=1 TYPE=DIV ATTR=CLASS:fg-spinner-outline&&TXT:
TAG POS=1 TYPE=CANVAS ATTR=WIDTH:718&&HEIGHT:538&&TXT:
TAG POS=1 TYPE=DIV ATTR=CLASS:btn-play&&TITLE:&&TXT:
TAG POS=1 TYPE=CANVAS ATTR=WIDTH:718&&HEIGHT:538&&TXT:


код публикуется в тегах code под спойлером

InfSub

Как все элементы в массиве перевести в нижний регистр?
Пробую по разному не получается.

Может нужно сначала массив перевести в строку, потом в нижний регистр, потом опять разбить на массив через сплит?
Может попроще можно, не могу никак сделать. Прошу помочь.

скрытый текст

Выделить код

Код:

var хештеги = [

"#SiirSokakt",
"#SiirSokaktaAp",
"#ICO",

]

var loop = 0
for(i=0;i<хештеги.length;i=0){
var регистр = хештеги[loop].toLowerCase()
loop++
}

alert(регистр)

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

скрытый текст

Выделить код

Код:

var i,hash = ["#SiirSokakt","#SiirSokaktaAp","#ICO"];

for(i=0;i<hash.length;i++){
    hash[i] = hash[i].toLowerCase();
};
alert(hash);

InfSub спасибо за помощь.

Есть файл js и в нём код на js который берёт iim-код с сайта и воспроизводит его.

Вот код

скрытый текст

Выделить код

Код:

var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Components.interfaces.nsIXMLHttpRequest);
var x = new XMLHttpRequest();
x.open("GET", "http://imacros-script.ru/test/macros.iim", false);
x.send(null);
var iim= x.responseText;
iimPlayCode(iim);


Такой вопрос.  Как сделать, чтобы скрипт брал из сайта код js и его воспроизводил?
Когда указываешь ссылку на js файл с js-кодом из сайта, то скрипт воспроизводится, но js-код не берёт.
iimPlayCode() внутри js не воспроизведёшь, а как сделать, не знаю.

Смотрите FAQ

запуск *.js-файла из *.js:

то скрипт воспроизводится, но js-код не берёт.

Непонятно что не берёт и зачем воспроизводить iimPlayCode() внутри js?

Squatter
Мне нужно именно из сайта, чтобы брался код-js и воспроизводился.
Таким образом, можно давать скрипт в качестве демо и в случае чего, можно просто удалить.
А если, скрипт будет воспроизводить код из самого файла, то над ним у меня уже конторля не будет.
А чтобы не узнали путь к файлу из сайта, можно код js зашифровать.

Алим
Ага,  его просто скопируют из демо и можете удалять сколько влезет)))

03-04-2018 17:52:29
Ни кто ж не помешает перейти по урлу из скрипта

Ни кто ж не помешает перейти по урлу из скрипта

Если он его обфусцирует, то это усложнит задачу.

А так, первое, что приходит в голову, парсить js с сайта и подставлять строкой в URL GOTO

скрытый текст

Выделить код

Код:

    var js = "location.href='https://forum.mozilla-russia.org/viewtopic.php?id=66458'";
    iimPlayCode("URL GOTO = javascript:"+js);


если js не в файле а допустим в теле HTML страницы

Нашёл код, который разгадывает рекапчу через макрос-iim в котором вставлен js-код.
И там есть строчка, которая использует js-код из сайта.

скрытый текст

Выделить код

Код:

VERSION BUILD=844 RECORDER=CR
'
URL GOTO=https://antcpt.com/rus/demo-form/recaptcha-2.html
'
' Поместите сюда ваш Anti-Captcha API ключ
SET antiCaptchaApiKey YOUR-ANTI-CAPTCHA-API-KEY
'
' Записываем Anti-Captcha API ключ в элемент TEXTAREA.g-recaptcha-response
TAG POS=1 TYPE=TEXTAREA ATTR=CLASS:g-recaptcha-response CONTENT={{antiCaptchaApiKey}}
' Или вы можете помещать ваш API клюв в DIV#anticaptcha-imacros-account-key, этот способ так же работает
'URL GOTO=javascript:(function(){var<SP>d=document.getElementById("anticaptcha-imacros-account-key");d||(d=document.createElement("div"),d.innerHTML="{{antiCaptchaApiKey}}",d.style.display="none",d.id="anticaptcha-imacros-account-key",document.body.appendChild(d))})();
'
' Подключение recaptcha.js файла с функционалом разгадывания рекапчи
URL GOTO=javascript:(function(){var<SP>s=document.createElement("script");s.src="https://cdn.antcpt.com/imacros_inclusion/recaptcha.js?"+Math.random();document.body.appendChild(s);})();
'
' Далее код, аналогичный тому, что используется для AntiCaptcha расширения
'
' Заполняем текстовое поле тестовым значением
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:recaptcha_demo_form ATTR=NAME:demo_text CONTENT=Тестовое<SP>сообщение<SP>для<SP>iMacros
'
' Самая важная чаcть: ждем 120 секунд пока индикатор антикаптчи с классом antigate_solver
' не получит класс solved, что означает что рекапча решена
SET !TIMEOUT_STEP 120


Источник
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Выделить код

Код:

https://antcpt.com/rus/imacros/application-example.html

Алим
Хорошо. И в чём соль? Он просто добавляет в body текущей страницы тег <script> c соответствующим адресом подключения.

То же самое на чистом JS

скрытый текст

Выделить код

Код:

var s=window.document.createElement("script");
    s.src="https://cdn.antcpt.com/imacros_inclusion/recaptcha.js";
    window.document.body.appendChild(s);

Алим
пока вы пишете на js предоставляемом в открытом виде, вы можете изобрести кучу "велосипедов", которые будут прятать ваш код, но ни кто не даст гарантии, что этот код будет у вас элементарнейше стырен
про обфускацию:
а что собственно, она даст? нечитабельный код? и что? что помешает использовать этот скрипт в обфусцированном виде? вы используете ОС Windows к примеру, у которой весь код закрыт, вам это мешает ее использовать при условии, что код рабочий?

Во-первых, без анализа, чужой обфусцированный код не каждый рискнёт запускать, если есть голова на плечах.
Во-вторых, на обфускацию и подобный межсайтовый скриптинг, предложенный в спойлере, у комьюнити обязательно будут ругаться антивирусы. Что конечно не играет в пользу идеи публикации демок с сылками на зашифрованные скрипты. Но сама обфускация, как метод сокрытия наработок, очень даже имеет смысл.
Буквально позавчера выдирал с codenet.ru функцию encodeURL в кодировке windows-1251. Был бы код обфусцирован – даже возиться бы не стал. И мало кто стал бы. ;)

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

InfSub
Согласен. Вопрос к тому, как написана демка. Достаточно вставить в неё alert() и реверс обфускации, чтобы его выковырнуть, уже делать никто не будет

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


А с алертом сценарий бесполезен.

Здравствуйте. Вдруг кому пригодится код (сравнивает время продолжительности ролика на Ютубе и текщее его время показа и отслеживает окончание показа ролика):

скрытый текст

Выделить код

Код:

//в бесконечном цикле сканируем продолжительность ролика и его текущее время показа, перегоняем ютубовское время с ролика вида 10:22 к простому числовому 1022
for (;; ){
iimPlayCode('TAG POS=1 TYPE=SPAN ATTR=class:"ytp-time-duration" EXTRACT=TXT');
time2=iimGetExtract().replace(/\:/g, "");
//alert(time2);
iimPlayCode('TAG POS=1 TYPE=SPAN ATTR=class:"ytp-time-current" EXTRACT=TXT');
time1=iimGetExtract().replace(/\:/g, "");
//alert(time1);

//сравниваем два полученных простых числа
if((time2) == (time1)){  
    alert('показ завершён');
    break;
}else{
    alert('показ идёт');
}
}


Буду рад, если подскажете способ определить, ставил я лайк просмотренному видео или не ставил.

Уважаемые! При вызове функции , в цикле с помощью "eval", не будет ли проблем?

пример

Выделить код

Код:

var faucet = [];

faucet['site1']=0; 
faucet['site2']=0;
faucet['site3']=0;    

function site1 ()alert(1);
function site2 ()alert (2);
function site3 ()alert (3);

for (var key in faucet)eval (key+"()");


Или есть альтернатива?

eval is evil вот смотри

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

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

Например делаем "действие 1" заполняем такие 10 значений в 10 разных строк
Например делаем "действие 2" заполняем другие 10 значений в 10 разных строк

Адрес страницы всегда разный но сайт один

на  сайте  все поля не оформлены в одну верформу и расширение InFormEnter для задачи бесполезно

17919
куча текста ни о чем, ни кода страницы, ни кода получившегося при записи скрипта для заполнения...
поле name присутствует практически в любом input'e вот и используйте его для привязки
ну или элентарнейший TAG POS=номер_ячейки - ни кто тоже не отменял

06-04-2018 21:43:16
поставьте iMacros для начала, судя по всему - вы этого до сих пор еще не сделали, рекомендую версию 8.9.7, так как текущая содержит слишком много багов, версию FF для этой верссии надо скачать не выше 48 кажется, в инфе о плагине посмотрите
зайдите в папку Demo там есть образцы скриптов, в том числе как считать данные из csv и как внести их в форму на сайте

Egorushka1974 пишет:

eval is evil

Знаю, поэтому спросил,хотя проблем пока не вижу.  Удобного альтернатива пока не нашел ( можно через массив....но чой-то......) .

dim222

скрытый текст

Выделить код

Код:

var faucet = [];

faucet['site1']=0; 
faucet['site2']=0;
faucet['site3']=0;

for (var key in faucet) {
    if (faucet[key] > 0) {
        runFaucet(key);
    }
}

function runFaucet(facetName){

    switch (facetName) {

        case 'site1':
            site1();
            break;
        case 'site2':
            site2();
            break;
        case 'site3':
            site3();
            break;
        default:
            break
    }

}

karginaolga спасибо!
Так я с такого кода и переписал под "eval".

InfSub
удалено, избыточное цитирование
объясните что нужно предоставить чтобы вы мне помогли?

InfSub

17919
html-код страницы, например

InfSub
удалено, бесполезное цитирование
Ссылка для скачивания файла:

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


ссылки публикуются под спойлером в тегах noindex

замечание


InfSub

17919, да Вы укажите ссылку на сайт (под спойлером и тегом NoIndex), зачем такие извраты? И напишите, какие там поля надо заполнять. Откуда должны браться значения (например, из созданного заранее тхт-файла, или ещё откуда), всегда они разные или одинаковые...
Пример

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

udalov
удалено, бесполезное избыточное цитирование
Этот сайт не доступен из вне, поэтому даю код
Данные браться либо с файла либо с другой страницы где уже введено это
Для одного действия значения ячеек и ячейки одинаковые

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


InfSub

17919
Буду за компом посмотрю,  пока же,  советую почитать правила форума и конкретно раздела iMacros

InfSub
Ну что удалось посмотреть?

17919
посмотрел, если вы добавите расширение .htm, к имени своего файла, чтобы получилось так: new 3.txt.htm и откроете его в браузере, то сможете увидеть то же, что увидел я - т.е. по факту ни чего
анализировать код - так же бесполезно, единственное, что видно из этого кода, это какая-то взаимосвязь с Oracle, возможно вы вносите данные через веб интерфейс или какой-то фреймворк для БД Oracle

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

InfSub
я не знаю как записать скрипт т.к. поэтому и спрашиваю
Например AutoFormer+ сохраняет и можно вставлять в ячейки на новой странице

17919
поставить плагин, если еще не стоит - нажать "запись" - ввести данные в форму на вашей странице - остановить запись - скопировать одержимое из файла #Current.iim и разместить на форуме, под спойлеров в тегах code

13-04-2018 23:38:10
17919
в FAQ - есть ссылки на youtube с уроками для начинающих, там все показано, что где и как нажать

День добрый.
Народ, помощь нужна.
Ковыряю сайт

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Не могу добраться как определить выйграла или проиграла ставка
Меня вполне устроит если вынуть цвет от сюда
скрытый текст
https://c.radikal.ru/c28/1804/05/ca5c13a17af2.png

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

Egorushka1974
А в чем сложность ручками расковырять строку и найти где прописан цвет? Экстрактишь строку потом в скрипте и проверяешь какой цвет

InfSub
А то я не делал так.
Что только не вынул из этой строки.
Не могу сообразить как, потому и прошу помощи.
в том и дело, что цвет там прописан в виде #br0689 типа такого
вынимая по селектору с помощью .innerHTML .outerHTML
вынимал много чего, но добраться до цвета не могу.
Потому и прошу помочь.

Egorushka1974
Знак минуса чем не показатель?

nikolay1987
Имя сестра, имя (с).
Не показатель, предложите решение.

Egorushka1974 вы не можете проверить число на минус?

Egorushka1974
innerHTML < 0 или innerHTML > 0
Вывалил бы кусок кода сюда, давно бы решили это ...

У меня такая замарока.

На FF 55.0.3 /64bit (ru) стоит  imacros 8.9.7(устанавливал с файла) , все робит, но...На блоке "try... catch(e)" выдает ошибку на "e.message", сам "e"-undevined. Идем дальше .
На FF 52.3.0 /32bit (en) также  imacros 8.9.7 (как ставил уже не помню) проблем вообще нет. Удаляю imacros и ставлю с файла и опять такая же байда с блоком.

Вопрос:
* Почему так?
* Возможно ли перенести imacros с одного FF на другой?

P.s пробовал файлы с разных ресурсов.

nikolay1987 пишет:

Вывалил бы кусок кода сюда, давно бы решили это ...

уже помогли, в личку решение прислали....

dim222
попробуй 47 мазилу портабельную,
там 8.9.7 работает четко, "try... catch(e)" сбоев не дает.
сам пользуюсь

Доброго всем времени суток. Рассчитываю на помощь компетентных форумчан.
У меня возникла проблема в написании макроса.
В языках программирования до банального (наверное) HTMLя не силён.
Пробую настроить макрос методом записи и редактирования, но не всё получается.

Например:

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


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

Вариант 1
скрытый текст

Выделить код

Код:

URL GOTO=prosoccer.gr
TAG POS=2 TYPE=IMG ATTR=SRC:http://www.prosoccer.gr/assets/img/icon-soccer.png
TAG POS=1 TYPE=SELECT ATTR=NAME:tblPredictions_length CONTENT=%-1


Вариант 2
скрытый текст

Выделить код

Код:

URL GOTO=prosoccer.gr
TAG POS=2 TYPE=IMG ATTR=SRC:http://www.prosoccer.gr/assets/img/icon-soccer.png
TAG POS=1 TYPE=A ATTR=TXT:Show<SP>all<SP>132<SP>free<SP>soccer<SP>prediction<SP>rows


Есть ещё сайт:
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


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

Bukinist, что Вы имеете ввиду под "событием"?
Текст Аймакросом сохраняют в файл командой EXTRACT. Что и как Вы пытались сохранить?

Bukinist предположу, что вы не добавили это:

скрытый текст

Выделить код

Код:

tag pos=1 type=table attr=id:tblPredictions extract=txt

InfSub пишет:

PRESIDENTпопробуй 35.х.х я в последнее время больше WaterFox юзаю, вроде как пошустрее чем FF

Последние версии Waterfox норм работают с imacros-ом? Или какую версию посоветуешь?

Помогите,как такое сделать если вообще возможно.
Вытянул даные з  сайта и сохранил в три разные файла csv.
Использую онлайн калькулятор.
Как в калькулятор вставить даные из 1.csv 2.csv 3.csv, чтоб получилось  5 из (1.csv)+9 из (2.csv)+1 из (3.csv)≟.....(5+9+1)

SET !DATASOURCE 1.csv
SET !DATASOURCE 2.csv
SET !DATASOURCE 3.csv

hirurgrrr1984, в какой именно калькулятор? В стандартный "компьютерный"? Никак.
Суммирование данных можно проводить сразу "на лету", без сохранения в файл.

InfSub пишет:

Bukinist предположу, что вы не добавили это:

скрытый текст

Выделить код

Код:

tag pos=1 type=table attr=id:tblPredictions extract=txt


Для меня наглядней в виде HTML-страниц со всеми "прорисовками-атрибутами" сайта. Текст в голом виде воспринимаю слабее. Быть может потому, что полноценного робота под мои задачи ещё нет. Хотя достаточное количество реализованных подобных идей уже есть на сайте фб с приемлемыми ценами. Мне же, для анализа данных нужен более широкий спектр сайтов со всеми матчами по определённому виду спорта на ближайший день .

udalov пишет:

Bukinist, что Вы имеете ввиду под "событием"?
Текст Аймакросом сохраняют в файл командой EXTRACT. Что и как Вы пытались сохранить?

Событие в данном случае - спортивный матч.
Сохраняю страницы сайтов "как есть" (папка с файлами+файл HTML), чтобы в дальнейшем просматривать их в автономном режиме.

скрытый текст
http://uploads.ru/xYw2e.jpg

скрытый текст
http://uploads.ru/AIb5j.jpg