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



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

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&#93;[noindex&#93;http://адрес_сайта/название_страницы[/noindex&#93;[/spoiler&#93;

Мозилла-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 результат такой: в браузере открывается новое окошко с именем-отчеством (вроде всё как надо).

скрытый текст
2tdFm.png

Но вот в поле ввода логина всё равно почему-то только имя вставляется, а отчество игнорится.
скрытый текст
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[b пишет

]taniks[/b]
какой цикл должен быть прерван? 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 пишет

Там работа с прокси и 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
Спасибо, разобралась.:)

Помогите решить делему!

скрытый текст
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]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
скрытый текст
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
скрытый текст
b484e8588697.png

Форумчане!

Возможно ли запросом получить request url?
[img]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:";

Уважаемые! Каким образом взять куки с помощью запроса, для следующего запроса?
Через браузер понятно! Можно сохранить,далее уже подставлять.
Но вот как запросом делать?

скрытый текст
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);


скрытый текст
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 иначе цикл действительно не запустится
ну, как говорится, и на старуху бывает проруха... банальность, а не увидел 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 пишет

у меня вообще нету, вот что есть:

а вот что у меня

скрытый текст
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

скрытый текст
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

Как сюда кликнуть?
Комментарии ссылок яндекс диска
Скриншот элемента:

скрытый текст
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.

как описано здесь
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'
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
скрытый текст
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 пишет

я так и не понял

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), то все картинки собирает сразу, как положено со всей страницы:
скрытый текст
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-макросе? Мешают другие плагины?

скрытый текст
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 с уроками для начинающих, там все показано, что где и как нажать

День добрый.
Народ, помощь нужна.
Ковыряю сайт

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


Не могу добраться как определить выйграла или проиграла ставка
Меня вполне устроит если вынуть цвет от сюда
скрытый текст
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

Господа, подскажите момент: есть файл, предположим, 1.csv, макрос переходит по ссылке, расположенной в {{!COL1}}, дальше совершает набор действий и попадает на другую страницу, адрес которой мне нужно записать в {{!COL2}} того же файла, на той же строке. Как это сделать?

Aikyaira
Ни как не перезаписав весь файл с нуля, т. е. по факту вам проще создать второй файл с первоначальной ссылкой и с конечной ссылкой, но отредактировать имеющийся не удасться

29-05-2018 13:31:18
Bukinist
Наглядней в FAQ видео по iMacros
Вам дали рабочий код, но вы даже этого не поняли

Здравствуйте. Подскажите пожалуйста как мне вставлять текст в ВК новый пост?

так не подходит:

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

Выделить код

Код:

EVENT TYPE=CLICK SELECTOR="#post_field" BUTTON=0
EVENTS TYPE=KEYPRESS SELECTOR="#post_field" CHARS="вввввв"


так-как по одной букве пишет а у меня текст состоит из 10000 символов, очень долго так получается(

bop101
Поиск по форуму по слову innerHTML

InfSub
а без js не как не сделать? я на js не умею(

bop101
"Вам саночки или ехать?" (с)
приведенный вами выше способ работает без js

Здравствуйте. Подскажите по коду...
Вот страница, всё видно без регистрации

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


На странице 20 даров, справа от каждого из них есть текстовый блок с фразами "Желаний и комментариев" и "Благодарности".

Скрипт проверяет дары сверху вниз, и если у дара нет благодарности, сохраняет урл дара (из строки Желаний и комментариев) в файл.

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

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

Выделить код

Код:

for(w=1; w<=20; w++){
    iimPlayCode('SET !REPLAYSPEED FAST\n TAG POS='+w+' TYPE=A ATTR=TXT:Желаний<SP>и<SP>комментариев* EXTRACT=HREF\n SAVEAS TYPE=EXTRACT FOLDER=* FILE=resalts.txt');    
}


Вариант с проверкой - не работает, вместо проверки условия просто переходит по ссылке из строки с if. Что я сделал не так?

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

Выделить код

Код:

for(w=1; w<=20; w++){
//iimSet("w", w);
if(iimPlayCode('SET !TIMEOUT_STEP 0\n TAG POS='+w+' TYPE=A ATTR=title:Благодарности*')>=0){
    //iimPlayCode('SET !TIMEOUT_STEP 0');
    //если благодарностей нет - сохраняем ссылку на дар в файл
    }else{
    iimPlayCode('SET !REPLAYSPEED FAST\n TAG POS='+w+' TYPE=A ATTR=TXT:Желаний<SP>и<SP>комментариев* EXTRACT=HREF\n SAVEAS TYPE=EXTRACT FOLDER=* FILE=resalts.txt');      
}}


И в каких случаях при работе с переменными надо указывать команду iimSet("w", w)?

udalov
в <ul class="data_conditions"> с Благодарностями 3 <li> без 2

udalov пишет

в каких случаях при работе с переменными надо указывать команду iimSet("w", w)?

Когда не используется конкатенация строк, т. е. тогда, когда вы не вставляете js переменную непосредственно в код iMacros'a, а передаете ее через iimSet()

InfSub пишет

Когда не используется конкатенация строк...

Спасибо. А можно два примера: с конкатенацией и без?

28-06-2018 07:23:39

karginaolga пишет

в <ul class="data_conditions"> с Благодарностями 3 <li> без 2

Спасибо. А как можно силами iMacros спарсить и посчитать количество <li>? Просто реально первый раз с таким методом сталкиваюсь...

udalov

Конкатенация:

Выделить код

Код:

for(i=1; i<100;i++) {
    iimPlaCode('TAG POS='+i+' TYPE=A ATTR=title:Благодарности*') ;
} ;


iimSet:

Выделить код

Код:

for(i=1; i<100;i++) {
    iimSet('num',i);
    iimPlaCode('TAG POS={{num}} TYPE=A ATTR=title:Благодарности*') ;
} ;

InfSub

А если работает и тот, и другой  вариант, в чем смысл варианта с iimSet?

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

Здравствуйте! Помогите пожалуйста подправить скрипт, чтоб дата тоже сохранялась при сохранении текста в файл. Скрипт на сайте определяет IP адрес и сохраняет в файл. Надо чтоб ещё и дата дописывалась. Там два кода: первый выдаёт дату (в виде алерта), а второй сохраняет IP-адрес в файл. А как объединить эти два кода, чтоб в файле сохранялся IP адрес в первом столбце, а во втором - дата?  Вот код:

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

Выделить код

Код:

var date = "" + new window.Date().toLocaleDateString() + " " + new window.Date().toLocaleTimeString() +"";
alert(date)

iimPlayCode('URL GOTO=http://myip.ru/');
iimPlayCode('TAG POS=1 TYPE=TD ATTR=TXT:*.*.*.* EXTRACT=TXT\nSET !EXTRACT   {{!EXTRACT}} \nSAVEAS  TYPE=EXTRACT FOLDER=C:\\ FILE=IP-adres.csv');

kariorambo
Замените последюю строку на:

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=TD ATTR=TXT:*.*.*.* EXTRACT=TXT\n ADD !EXTRACT "'.+date+'"\nSAVEAS  TYPE=EXTRACT FOLDER=C:\\ FILE=IP-adres.csv');

04-07-2018 12:53:08
Обновлено,  с учетом столбцов

InfSub
не работает. Пишет ошибку:

SyntaxError: missing name after . operator, line 5 (Error code: -991)

kariorambo
Какой именно код не работает,  вы уверены что взяли последний вариант кода? в посте выше, были внесены  исправления, из-за ошибок сделанных т9, так как писал с телефона

InfSub
всё скопировал в точности как вы написали с учётом последнего редактирования. Вот точная копия скрипта:

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

Выделить код

Код:

var date = "" + new window.Date().toLocaleDateString() + " " + new window.Date().toLocaleTimeString() +"";
//alert(date)

iimPlayCode('URL GOTO=http://myip.ru/');
iimPlayCode('TAG POS=1 TYPE=TD ATTR=TXT:*.*.*.* EXTRACT=TXT\n ADD !EXTRACT "'.+date+'"\nSAVEAS  TYPE=EXTRACT FOLDER=C:\\ FILE=IP-adres.csv');


и выдаёт ошибку:
скрытый текст
2JbgD.png

04-07-2018 13:32:33
разобрался в чом причина: убрал ненужную точку, которая почему-то оказалась в вашем коде тут:

Выделить код

Код:

"'.+date+'"

без этой точки всё фунциклирует как положено. Благодарю! :)

kariorambo
Т9, что б его))

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

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

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

Выделить код

Код:

//ip который ищем
var ip = "185.220.102.4";
//Массив строк из файла
var arrIp = imns.FIO.readTextFile(imns.FIO.openNode("C:\\Users\\ip.txt")).match(/^.+/mg);
//Смотрим в массиве наличие ip
if (arrIp.indexOf(ip) !== -1) {
    alert("Нашел IP в файле");
} else {
    alert("Не нашел IP в файле");
}


Значение переменной arrIp естественно должно обновляться после сохранения в файл новых адресов.


Еслли в файле не одна колонка, то придётся дополнительно прогонять строки в цикле примерно так

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

Выделить код

Код:

//ip который ищем
var ip = "185.220.102.4";
//Массив строк из файла
var arrIp = imns.FIO.readTextFile(imns.FIO.openNode("C:\\Users\\ip.txt")).match(/^.+/mg);

for (i=0;i<arrIp.length;i++) {
    //Смотрим в массиве наличие ip
    if (arrIp[i].match(/[^"",;]+/g)[0] == ip) {
        alert("Нашел IP в файле");
    } else {
        alert("Не нашел IP в файле");
    }
}


где [^"",;] регулярка фильтрует разделители колонок. Поймёт варианты address;date или "address";"date" или "address","date" или address,date или "address""date"


или собирать все ip из файла в массив такой регуляркой

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

Выделить код

Код:

var arrIp = imns.FIO.readTextFile(imns.FIO.openNode("C:\\ip.txt")).match(/\d+\.\d+\.\d+\.\d+/g);


и смотреть наличие IP в массиве как в первом варианте без цикла.

Или самое простое составить регулярное выражение, которое точно ищет IP в фвайле

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

Выделить код

Код:

//ip который ищем. Экранируем точки
var ip = "169.420.102.87".replace(/[.]/g, '\\$&');
//Текст из файла
var str = imns.FIO.readTextFile(imns.FIO.openNode("C:\\ip.txt"));
//Смотрим в тексте наличие ip
if (str.match(new RegExp('"'+ip+'"'))) {
    alert("Нашел IP в файле");
} else {
    alert("Не нашел IP в файле");
}


Где в регулярном выражении RegExp('"'+ip+'"') обязательно нужно указать символы, которые стоят до и после IP и участвуют в разделении колонок, в данном случае кавычки " для записи в подобном формате "address","date"

Вариантов масса.

Squatter, благодарю за предложенные варианты! Из всех наиболее лучше подходит последний. Только вопрос остался: как делать чтоб в переменную var ip вставлялся самый последний IP-адрес, который скрипт на сайте определил и сохранил в этот же файл?
В нашем случае скрипт по определению IP-адреса выглядит так:

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

Выделить код

Код:

var date = "" + new window.Date().toLocaleDateString() + " " + new window.Date().toLocaleTimeString() +"";
 alert(date)

  iimPlayCode('URL GOTO=http://myip.ru/');
  iimPlayCode('TAG POS=1 TYPE=TD ATTR=TXT:* EXTRACT=TXT\n ADD !EXTRACT "'+date+'"\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=IP-adres.csv');


Так вот надо сделать так, чтоб в скрипт, вариант которого вы предложили как самое простое (и это на мой взгляд лучший вариант) вставлялся IP-адрес определившийся самым последним. Ну то есть в переменную var ip, в предложенном вами скрипте. Как это реализовать, подскажите пожалуйста? То есть как совместить два скрипта в один, который бы работал так: определял IP-адрес (и время), сохранял в файл, потом тут же брал бы из этого файла последний определившийся IP-адрес и сравнивал со всеми остальными IP-адресами, которые есть в этом файле?
То есть само по себе соединить два скрипта не вопрос:
первый скрипт, который определяет IP-адрес и сохраняет в файл IP-adres.csv

Выделить код

Код:

var date = "" + new window.Date().toLocaleDateString() + " " + new window.Date().toLocaleTimeString() +"";
 alert(date)

  iimPlayCode('URL GOTO=http://myip.ru/');
  iimPlayCode('TAG POS=1 TYPE=TD ATTR=TXT:* EXTRACT=TXT\n ADD !EXTRACT "'+date+'"\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=IP-adres.csv');


скрипт, предложенный вами, который сравнивает IP-адрес с остальными из файла

Выделить код

Код:

//ip который ищем. Экранируем точки
var ip = "178.121.73.63".replace(/[.]/g, '\\$&');
//Текст из файла
var str = imns.FIO.readTextFile(imns.FIO.openNode("C:\\IP-adres.csv"));
//Смотрим в тексте наличие ip
if (str.match(new RegExp('"'+ip+'"'))) {
    alert("Нашел IP в файле");
} else {
    alert("Не нашел IP в файле");
}


А вот вопрос в том, как сделать чтоб IP-адрес, который последний из списка (т.е. последний определившийся) вставлялся в переменную var ip?

07-07-2018 09:51:07

скрытый текст
2Jgvf.png

kariorambo

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=TD ATTR=TXT:* EXTRACT=TXT');
  ip=iimGetLastExtract();
  alert(ip)

PRESIDENT
Благодарю! Получилось всё как надо. :)

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

зачем экранировать точки?
Screenshot-2341.png

kariorambo пишет

В общем так я и не понял, для чего надо убирать точки

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

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

Выделить код

Код:

var str = "169x42z102y87";

if (str.match(/169.42.102.87/)) {
    alert("Нашел IP в строке");
} else {
    alert("Не нашел IP в строке");
}


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

Squatter, благодарю! :)

Перестали работать версии 8.9.7 и 9.0.3.. но до этого ещё и на новую версию обновило.. попробовал в ручную поставить старые версии у обоих кнопка "Воспроизвести" не работает, какой выход? или пора на новую переходить? так какие то ipсвитчеры..

emozio
Портабельные версии FF в помощь

InfSub
Не пробовал такие, какую версию качать портабельную версию?

emozio
Пробуйте,  есть все версии, даже совсем древние, например 3
Все зависит от задач и от версии имакроса,  которую планируете использовать

kariorambo
Один и тот же номер q должен повторяться 5 раз,потом реконект ?
И тебе же нужно номер q повторять при ошибке, значит q--;
И желательно поставь после действия ожидание WAIT SECONDS хотя бы в одну секунду.

PRESIDENT, спасибо!

del

del

kariorambo пишет

как написать на ява-скрипте простое условие

а что поиск по форуму сломался?
элементарные вопросы, в том числе о том, как проверить доступность страницы - разжевывались многократно
примеры условий вида: "если ... то... иначе..." - разжевывались ни единожды и есть чуть ли не на каждой странице форума iMacros

ставите таймаут на загрузку страницы в 60 сек
после кода с загрузкой страницы (URL GOTO=), проверяете наличие определенного элемента на странице (элемент должен быть всегда на данной странице, например лого или какой-то текст
если ошибка - значит страница не загрузилась или данный элемент не найден, иначе - все ок

Всем, привет.
Иногда сталкиваюсь с такой задачей, когда через EVENT интер не действует KEY=13
Вижу на сайтах, что как то чере js -код это делается, но не могу понять как это прописать, чтобы работало.

Вот на этом сайте, нужно в чат отправить текст.
Регистрироваться не нужно.

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


Текст печатается, а вот Enter через iim не работает.

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

Выделить код

Код:

FRAME F=1
TAG POS=1 TYPE=TEXTAREA ATTR=CLASS:inp CONTENT="всем, привет"

или

Выделить код

Код:

FRAME F=1
EVENT TYPE=CLICK SELECTOR="#kiwi>DIV:nth-of-type(5)>DIV:nth-of-type(2)>DIV>TEXTAREA" BUTTON=0
EVENTS TYPE=KEYPRESS SELECTOR="#kiwi>DIV:nth-of-type(5)>DIV:nth-of-type(2)>DIV>TEXTAREA" CHARS="Всем, привет"

Не отправляет

Выделить код

Код:

EVENT TYPE=KEYPRESS SELECTOR="#kiwi>DIV:nth-of-type(5)>DIV:nth-of-type(2)>DIV>TEXTAREA" KEY=13
EVENT TYPE=KEYPRESS SELECTOR="#kiwi>DIV:nth-of-type(5)>FORM>INPUT" KEY=13


Мазила 56.0.2
Аймакрос 8.9.7

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

InfSub

Уже нашёл решения.
Может это кому-то поможет

Просто заменили KEYPRESS на KEYDOWN

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

Выделить код

Код:

EVENT TYPE=KEYDOWN SELECTOR="HTML>BODY>DIV>DIV:nth-of-type(5)>DIV:nth-of-type(2)>DIV>TEXTAREA" KEY=13

InfSub, спасибо!

Здравствуйте! Я учусь программированию на java-скрипт языке. У меня не получается решить такую задачку: как написать код, который сохраняет текст в файл с расширением csv в разные столбцы? Например в столбец A, B, C. Для этого обязательно обнуление делать или нет?
Вот например, извлекаем текст и сохраняем в файл:

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

Выделить код

Код:

TAG POS=1 TYPE=* ATTR=* EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=D:\ FILE=1.txt
SET !EXTRACT NULL


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

Пример на предыдущей странице

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

Выделить код

Код:

ADD !EXTRACT A
ADD !EXTRACT B
ADD !EXTRACT C
//И только потом сохранение
SAVEAS TYPE=EXTRACT FOLDER=D:\ FILE=1.txt
SET !EXTRACT NULL


Так экстракты в порядке их вызова лягут по колонкам.


З.Ы. Это не JS, а лишь обёртка на него и некоторые браузерные методы.

del

Squatter что-то не то вы мне подсказали! Вот я написал простой js код-скрипт НА ВАШЕМ ПРИМЕРЕ (по вашей "подсказке"):

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

Выделить код

Код:

for(a=1; a<5; a++){
 iimPlayCode('URL GOTO=https://forum.mozilla-russia.org/viewtopic.php?pid=759923#p759923');
 iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT\nADD !EXTRACT A');
 iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT\nADD !EXTRACT B');
 iimPlayCode('TAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT\nADD !EXTRACT C');
 iimPlayCode('SAVEAS TYPE=EXTRACT FOLDER=C:\ FILE=1.csv');
 }


ну и что? ничего оно не сохраняет и тем более в разные столбцы. Ну вы раз взялись подсказать, помочь человеку, дак хоть напишите что, да как. Как правильно записать эти команды в js, чтоб js скрипт сохранял текст в разные столбцы

Герман
Разницу не видите, что я написал и что вы выложили? Естественно у вас ничего не сохраняется, т.к. экстракты и сохранение в разных вызовах iimPlayCode()
Читайте вики по макросу

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


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

Выделить код

Код:

iimPlayCode('ADD !EXTRACT col-A\nADD !EXTRACT col-B\nADD !EXTRACT col-C\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv');

Герман пишет

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

Уже написал. А разжевывать до молекул такую элементарщину вам тут никто не обязан. Есть wiki.imacros  и есть поиск по форуму, где ответ на этот вопрос уже неоднократно дан. Мало того вам даже лень пример посмотреть на предыдущей странице :facepalm:

Squatter пишет

Герман
Разницу не видите, что я написал и что вы выложили? Естественно у вас ничего не сохраняется, т.к. экстракты и сохранение в разных вызовах iimPlayCode()

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

Выделить код

Код:

iimPlayCode('ADD !EXTRACT col-A\nADD !EXTRACT col-B\nADD !EXTRACT col-C\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv');

а сейчас что вы тут написали? Код? И что этот ваш код сохраняет? Вы его пробовали в работе? ... НЕТ. Ну так так глядите, что  этот ваш код сохраняет вместо нужного текста с сайта:

скрытый текст
2Jw5d.png

Герман пишет

И что этот ваш код сохраняет?

Сохраняет по колонкам, как и было задумано. Или вы думали вам тут всё расскажут, разжуют и ещё и сценарий за вас напишут? Тогда вам в отдел заказов платных скриптов.
А с тем, что вам нужно извлечь с сайта – справляйтесь сами.
Вопрос был как сохранять по колонкам? Ответ дан два раза с рабочими примерами для iim и JS.
Что ещё надо? Cпарсить за вас всё нужное с сайта? Или начнёте уже самостоятельно знакомиться с темой, коль уж бравурно заявили, что учитесь "программированию на java-скрипт языке"? ;)

Squatter пишет

Вопрос был как сохранять по колонкам?

вопрос был как сохранять по колонкам ТЕКСТ С САЙТА, а не туфту которая в самом вашем бездарном нерабочем коде ;)

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

Герман пишет

У меня не получается решить такую задачку: как написать код, который сохраняет текст в файл с расширением csv в разные столбцы? Например в столбец A, B, C

Слов "c сайта" в ваших первых двух постах нет. Как сформулировали, так вам и ответил. Поэтому не вам заикаться о "туфте", коль сами не помните, что спрашивали.

Squatter пишет

Поэтому не вам заикаться о "туфте"

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

16-07-2018 13:57:55
И ещё: если вы в придачу к заиканию ещё и слепой, то выделяю тест моих слов из вашей же цитаты. Читайте внимательно (можете даже по слогам):

Squatter пишет

У меня не получается решить такую задачку: как написать код, который сохраняет текст в файл с расширением csv в разные столбцы? Например в столбец A, B, C

Код, который сохраняет ТЕКСТ в файл. ТЕКСТ, а не туфту которая в вашем коде и записана, и которая же единственная и сохраняется. А где сохранение текста? Почему текст не сохраняется? Это что за помощь такая хорошему человеку (мне), когда на чёткий вопрос о сохранении ТЕКСТА по столбцам, там вставляется в эти столбцы хрен знает что. Нафик такая помощь нужна вообще! Не умеешь нормально читать, о чём тебя просят - не лезь! Всё равно толку с тебя и твоей помощи - как от козла молока.

Герман пишет

Потому и облажались вы, когда вызвались помочь хорошему человеку (мне)

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

Герман пишет

А где сохранение текста?

На скриншоте, который вы выложили. На нём сохранённый по колонкам текст, который перед этим извлекли через ADD !EXTRACT.
И вы мне ещё тут что-то про зрение будете говорить, когда сами в упор не видите что заскринили?

P.S. Не умеете корректно формулировать вопрос и понимать что вам подсказывают – не жалуйтесь на плохую помощь.

Герман пишет

Позабавьте меня ещё

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

Герман
Ты за базаром чуток следи.
Если у тебя тяму не хватает коллы в коде на JS на то что ты спарсил заменить, то это уже твои проблемы, вернее незнание элементарщины.

Squatter

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

PRESIDENT пишет

коллы в коде на JS на то что ты спарсил заменить

Здравствуйте! Я так поняла, что форумчанин Squatter умышленно написал так код js, чтоб он не сохранял нужный текст. А для того чтоб с сайта спарсить надо немножко его код переиначить. И для этого можно использовать переменную {{!COL}}. Верно?
Примерно вот так должно быть:

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

Выделить код

Код:

for(a=0; a<5; a++){

   iimPlayCode('URL GOTO=https://forum.mozilla-russia.org/viewtopic.php?pid=759923#p759923');
   iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT {{!COL1}}');
   iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT {{!COL2}}');
   iimPlayCode('TAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT {{!COL3}}');
   iimPlayCode('ADD !EXTRACT {{!COL1}} \nADD !EXTRACT {{!COL1}} \nADD !EXTRACT {{!COL1}} \nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv');

   }


Я сама не проверяла, но по идее скрипт должен работать как надо Герману. Проверьте, если работает, значит всё там правильно. :)

OMG, понеслась клоунада со сменой пола и размножением клонов. Если б ты с таким же рвением FAQ по макросу читал. ;)

Compunella пишет

Я так поняла, что форумчанин Squatter умышленно написал так код js, чтоб он не сохранял нужный текст.

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

Уже два раза чёрным по белому написали, смени экстракты с колами на свои директивы, извлекающие текст со страницы и засунь их в один iimPlayCode(). В конечном итоге, готовый пример посмотреть не судьба? https://forum.mozilla-russia.org/viewto … 35#p759535


Это что, так трудно?

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

Выделить код

Код:

//При условии что команды извлекающие контент составлены правильно
iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT\nTAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT\nTAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv');

Squatter пишет

Это что, так трудно?

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

Выделить код

Код:

//При условии что команды извлекающие контент составлены правильно
iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT\nTAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT\nTAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv');

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

Compunella пишет

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

Конкатенация в помощь

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

Выделить код

Код:

iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT\n'+
            'TAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT\n'+
            'TAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT\n'+
            'SAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv');


Или использовать гравис
скрытый текст

Выделить код

Код:

iimPlayCode(`
    TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT
    TAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT
    TAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT
    SAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv
`);


Да, ещё обратным слешем можно разбивать строковый литерал

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

Выделить код

Код:

iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT\n\
             TAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT\n\
             TAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT\n\
             SAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv');

Compunella пишет

Но не лучше ли было бы использовать команду  ADD !EXTRACT и записать код более рациаонально?

Пример более рационального кода в студию.

Всем доброго времени суток! Извиняюсь если этот вопрос поднимался неоднократно, по крайней мере ответа на форуме я не нашел.
Встал вопрос, у меня есть макрос, задача там простая ( Открывается список, рядом со списком кнопки, он их нажимает по очереди и так до конца списка, после чего нажимается далее и всё по новой (Цикл) ). Проблема там заключается в том, что иногда количество кнопок 20,5,90 т.е. рандомное. На данный момент решение только одно, это в самом макросе прописал количество действий 50 и когда он упирается в то, что кнопок просто нет, он дальше продолжает пытаться их прожать.

Собственно, возможно ли реализовать, что когда макрос доходил до конца списка т.е упирался в отсутствие кнопки, он листал макрос до момента Далее, заканчивал макрос грубо говоря ?

Извиняюсь если топорно объясняю!

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

Выделить код

Код:

TAG POS=2 TYPE=BUTTON ATTR=TXT:Клик
WAIT SECONDS={{!VAR1}}
TAG POS=1 TYPE=A ATTR=TXT:Далее


Это часть кода, строка с тэг пос повторяется 50 раз

SH0N
на js:

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

Выделить код

Код:

var pos = window.document.querySelectorAll('тут селектор кнопки');
    for (var w = 0; w < pos.length; w++) {
        pos[w].click();
        iimPlayCode('WAIT SECONDS=1');
        }
    iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:Далее');

karginaolga пишет

SH0N
на js:

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

Выделить код

Код:

var pos = window.document.querySelectorAll('тут селектор кнопки');
    for (var w = 0; w < pos.length; w++) {
        pos[w].click();
        iimPlayCode('WAIT SECONDS=1');
        }
    iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:Далее');

Выдает ошибку

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

Выделить код

Код:

Error: Accessing content window is not supported in multiprocess Firefox, line 208 (Error code: -991)


Я не совсем понял, где найти селектор кнопки, не могли бы вы по подробней объяснить?

Вот так выглядит полностью код

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

Выделить код

Код:

VERSION BUILD=8970419 RECORDER=FX
SET !ERRORIGNORE YES
FILTER TYPE=IMAGES STATUS=OFF


SET !VAR1 EVAL("Math.floor(Math.random()*10 + 38);")

TAB T=1

EVENT TYPE=CLICK SELECTOR="HTML>BODY>DIV:nth-of-type(3)>DIV>DIV:nth-of-type(2)>DIV>ARTICLE>DIV:nth-of-type(2)>SECTION:nth-of-type(2)>DIV>A" BUTTON=0

TAG POS=2 TYPE=BUTTON ATTR=TXT:Обновить
WAIT SECONDS={{!VAR1}}
[Код сверху повторяется 50 раз]

TAG POS=1 TYPE=A ATTR=TXT:Далее

SH0N
Надеюсь ты понял что это js а не iim

PRESIDENT
Конечно я понял, что это js. Я его знаю уж совсем поверхностно. На сколько я понял
1 строка - пихает в переменную команду
2 строка - это уже количество повторений
3 строка - это запуск переменной и клик
4-5 строка - запуск кода imacros
Примерно так я понял код, единственное что я не понял как достать селектор кнопки

SH0N пишет

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

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

Ребят! Кто-нить работает с ГУГЛ-таблицами запросами? Если не жалко поделитесь плиз!

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

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

Выделить код

Код:

function память1(){
var sec = 10
}

function память2(){
iimPlayCode('SET !ERRORIGNORE YES \n' +
'WAIT SECONDS='+sec+'')
}

память2()

Алим
Можно так

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

Выделить код

Код:

func1();

/****************/

function func1(){
var sec = 10;
func2(sec);
}

function func2(sec){
alert('Ждём '+sec+' секунд')
iimPlay('CODE:WAIT SECONDS='+sec)
}

PRESIDENT
Теперь понятно. Работает. Благодарю.

Мазила 47.0.1
Imacros 8.9.7

Всем добрый день.
Народ помогите пожалуйста, не даются регулярки никак.
есть строка

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

Выделить код

Код:

{"asks":[["0.00005212",14865.4132]],"bids":[["0.00005201",14868.5982]],"isFrozen":"0","seq":192201830}


я ее сэкстрактил в переменную, ну пусть temp
как ее порезать с помощью регулярок, чтобы получить например
некие переменные ?
asks = 0.00005212;
volasks = 14865.4132;
так например
ну и для bids аналогично.
Спасибо.

Egorushka1974 пишет

Народ помогите пожалуйста.

Ты не умеешь работать с .json ?

можно так.

Выделить код

Код:

function loadFromJSON (filename) {
  
    var fileDescriptor = imns.FIO.openNode(filename);
        return JSON.parse(imns.FIO.readTextFile(fileDescriptor));    

};

a = loadFromJSON ('file.json');
asks = a.asks[0][0];
Volasks = a.asks[0][1];
bids = a.bids;

window.console.log(asks);
window.console.log(Volasks);
window.console.log(bids);

dim222 пишет

Ты не умеешь работать с .json ?

пока не умею
спасибо за помощь
а попроще, с регулярками нельзя?

20-08-2018 13:53:12

dim222 пишет

Ты не умеешь работать с .json ?

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

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

Выделить код

Код:

var a = JSON.parse(temp);
asks = a.asks[0][0];
Volasks = a.asks[0][1];
bids = a.bids[0][0];
Volbids = a.bids[0][1];


работает

Иногда в iim нужен разный LOOP.
Например начать с n пользователя, а брать текст из документа с n строки и чтобы у каждого шёл свой счёт.

Написал и получилось.
Может кому-то будет полезен данный код.

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

Выделить код

Код:

'С какого начать?
SET первый 1
SET один EVAL("var loop = {{!LOOP}}+{{первый}}-1;loop")
prompt {{один}}

'С какого начать?
SET второй 5
SET два EVAL("var loop = {{!LOOP}}+{{второй}}-1;loop")
prompt {{два}}

'С какого начать?
SET третий 100
SET три EVAL("var loop = {{!LOOP}}+{{третий}}-1;loop")
prompt {{три}}

Кто знает как проскроллить одним разом до указанного объекта на раскрытой странице?

Алим
document.getElementById("name").focus();

PRESIDENT
С focus() у меня не сработало через imacros

А вот так, работает

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

Выделить код

Код:

content.document.getElementById('name').scrollIntoView();


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

Выделить код

Код:

content.document.getElementsByClassName('name')[10].scrollIntoView(false);

В переменной txt помещается весь html код странички пользователя вконтакте через GET зпрос
В page_name хранится имя и фамилия пользователя вконтакте.

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

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

Выделить код

Код:

var XMLHttpRequest=Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
var b=XMLHttpRequest();
b.open('GET','https://vk.com/v.stanislavskaia',false);
b.send('');
var txt = b.responseText;

var txt = txt.getElementsByClassName('page_name')[0].innerHTML

iimDisplay(txt)

Алим пишет

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

XPath?

скрытый текст
https://docs.google.com/document/d/1Pdf … zner1ml919
http://html-agility-pack.net/parser - библиотека, которую можно подключить в C#, ZennoPoster. Очень толковая и удобная. Возможно можно подключить к JS или Imacros.
http://kronus.me/2011/04/%D0%B2%D0%B2%D … %81%D0%B5/ - Пример использования библиотеки.

Также очень советую обратить внимание на средство для разгадки капч CapMonster. Можно использовать как в связке с ZennoPoster, так и связку Imacros+JS+CapMonster.
Когда зарабатывал на кранах и сократителях, гадал сотнями тысяч капч в день на выделенном сервере, получилось и сэкономить за счет автоматической разгадки и заработать порядочно денег благодаря этим продуктам. В общем, очень рекомендую:
скрытый текст
Капмонстр: https://zennolab.com/ru/products/capmonster/pid/gor
Зенка: https://zennolab.com/ru/products/zennoposter/pid/gor
PS: Уважаемый админ, не сочти за тупую рекламу.

Если не сложно, подскажите. Есть скрипт, он обходит по страницам из имеющейся базы и сохраняет нужную мне информацию со страницы в txt фаил. Помогите внедрить GET запрос, что бы не заходить на страницу каждый раз а просто прогружать ее в окне браузера а дальше работать по имеющемуся скрипту. Скрипт работает в цикле по кол-ву страниц в базе.
И можно ли это реализовать в рамках iim формата, с JS я плохо дружу(
Спасибо!)

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

Выделить код

Код:

SET !ERRORIGNORE YES
FILTER TYPE=IMAGES STATUS=ON
SET !DATASOURCE_DELIMITER ;
SET !DATASOURCE D:\Baza.csv
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
URL GOTO={{!COL1}}

TAG POS=1 TYPE=a ATTR=class:"_64-f" EXTRACT=TXT
TAG POS=1 TYPE=A ATTR=HREF:*page_about_category EXTRACT=TXT
TAG POS=4 TYPE=DIV ATTR=TXT:*follow<SP>this EXTRACT=TXT
ADD !EXTRACT {{!URLCURRENT}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=BAZA_UPDATE.txt

s.stake пишет

можно ли это реализовать в рамках iim формата,

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

s.stake пишет

Помогите внедрить GET запрос

все банально, гугл по словам "js циклы" и чтение/поиск по данной теме

InfSub
удалено, бесполезное цитирование
Чем так отвечать, лучше бы проигнорили, если не желания помочь. Прежде чем сюда обратиться я прогуглил естественно, и в найденном материале не смог разобраться и понять, как это можно реализовать, так как плохо знаю JS(о чем написал в сообщении). А обратился я ко всем на форуме, может кто и подскажет, кто в это хорошо разбирается, и кому не трудно.

InfSub

s.stake
на аналогичный вашему вопрос, отвечали более сотни раз только в данной теме, разжовывать "как сложить a+b" в 101 раз банально нет желания
и нет его, не потому что я такой вредный, а потому что вам лень читать!
уж изните, разобраться в элементарном построении цикла на js может даже ребенок, как основываясь на уроках в интернете, например, на:

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


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

17-09-2018 02:22:02

s.stake пишет

так как плохо знаю JS(о чем написал в сообщении)

если вы за 1.5 года не смогли освоить основы js, к коим относятся циклы, то тут можно сделать только 2 вывода, либо вы и не пытались освоить, либо ваш iq плачевно мал
во втором, я сомневаюсь, а в том что вы пальцем о палец не ударили, уверен на 99%

InfSub

флуд не по теме и ИМХО автора
Если бы я первый раз зашел на этот форум, то задумался бы в адекватности и компетентности ваших ответов. Но так как не первый раз с вами сталкиваюсь на этом форуме, убеждался ранее, что это не так. Наверно просто не в этом случаи.

InfSub

s.stake

offtop
если, бы вы пришли на форум впервые, я бы и не утверждал что вы за 1.5 года не смогли изучить циклы.
в ваших более ранних постах присутствует js, в данном же посте попытка перекинуть задачу на форумчан: "типа мне лень разбираться самому, напишите за меня", для таких запросов - есть отдельная тема  iMacros: Поиск и заказ скриптов

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

Здравствуйте! Подскажите пожалуйста команду для iim скрипта  чтоб нажимала клавиши ctrl + v, то есть вставляла скопированный из буфера текст в нужное поле. Как записать? Должно быть примерно так?

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

Выделить код

Код:

EVENT TYPE=KEYPRESS SELECTOR=* KEY=17 + KEY=86

dvitkovs2,

Вот тут есть два способа https://forum.mozilla-russia.org/viewto … 30#p731830

а нет, это не совсем то, что надо...

udalov
удалено, бесполезное цитирование
имитация клика мыши? это оно?

InfSub

Нашёл как имитировать нажатия клавиш ctrl +v, но толку мало. Вот код:

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

Выделить код

Код:

EVENT TYPE=KEYPRESS SELECTOR="#\\38 9970030-D696-4CB4-A260-1F6B013875BB_6620494298226200" CHAR="v" MODIFIERS="ctrl,v"


при этом скопированное в буфер вставляется в нужное поле только если в значении SELECTOR прописаны те данные, которые прописаны. Так вот: последняя часть этих данных (6620494298226200) каждый раз меняется при обновлении страницы. Если же вместо этих изменяющихся данных просто написать *, то ничего не будет, тогда код не сработает и скопированное в буфер не вставится.
Что можно сделать в данной ситуации? Как вставлять данные в нужное поле, если данные SELECTOR всегда меняются, подскажите пожалуйста кто-нибудь?
Просто есть такие хитрые сайты, когда простыми средствами нельзя вставить данные в поля, там даже в ручную при написании текста может сразу появляться предупреждение, что текст вводится не на латинице, или нет нужного символа, или есть запрещённый символ. И хотя просто вставлять текст там можно в принципе и самым обычным способом imacros, но тогда при нажатии "ввод", будет выдавать ошибку что данные не введены или введите правильные данные. В общем это такие поля, которые можно заполнять только вручную или через EVENT, но через EVENT надо чтоб и SELECTOR был точно указан, а он всегда меняется.  Подскажите какой лайфхак, как на таких сайтах вставлять текст в такие поля?

dvitkovs2
Тебе скорее всего !CLIPBOARD нужен

PRESIDENT
Так !CLIPBOARD это само собой. Я ж его и использую. Копирую нужное в буфер обмена и потом чтобы вставить скопированное куда надо, имитирую нажатие Ctrl +V. Но тут проблема в том, что каждый раз при обновлении страницы сайта, SELECTOR меняется. То есть конкретно меняется выделенное жирным шрифтом число:
EVENT TYPE=KEYPRESS SELECTOR="#\\38 9970030-D696-4CB4-A260-1F6B013875BB_6620494298226200" CHAR="v" MODIFIERS="ctrl,v"

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

dvitkovs2 пишет

А если его заменять звёздочкой *, то вообще команда не работает

event - не работает с модификаторами, например со звездочкой

dvitkovs2 пишет

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

при использованиии iim-скриптов и event - да, это единственный вариант

InfSub пишет

при использованиии iim-скриптов и event - да, это единственный вариант

А если не iim скриптов, а js скриптов? Просто тут iim код был предоставлен в качестве примера, а сам скрипт будет js. Для js есть иной вариант кроме как каждый раз как-то извлекать и вставлять в код?

Я не пойму зачем тебе вообще ctrl + v    :rolleyes:

вот этим копируешь в буфер обмена

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

Выделить код

Код:

TAG POS=1 TYPE=DIV ATTR=CLASS:postmsg&&id:message761883 EXTRACT=TXT  
SET !CLIPBOARD {{!EXTRACT}}


а этим вставляешь из буфера обмена
скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=TEXTAREA ATTR=NAME:req_message CONTENT={{!CLIPBOARD}}


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


и функция EVENT  самая коряво работающая команда омакроса, :angry:
старайся её не использовать.

InfSub

Подскажите пожалуйста, как брать и вставлять данные из текстового файла, если используется функция EVENT ? В данном случае такой код:

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

Выделить код

Код:

iimPlayCode('SET !DATASOURCE spygasm-login.txt\nSET !DATASOURCE_LINE '+q+'\nSET !EXTRACT {{!COL1}}');



// это правильно записанная строка, так данные берутся из текстового файла и вставляются в поле ввода
  iimPlayCode('TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:NoFormName ATTR=NAME:username CONTENT='+iimGetExtract());



// а эта строка с функцией EVENT работает не правильно, то есть не берет данные из текстового файла и не вставляет в поле ввода, вместо этого прописывает +iimGetExtract()+
  iimPlayCode('EVENTS TYPE=KEYPRESS SELECTOR="HTML>BODY>MAIN>HEADER>DIV>DIV:nth-of-type(4)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>FORM>DIV>DIV>DIV>DIV>INPUT" CHARS="+iimGetExtract()+"');


Та строчка что в середине, нормально работает и данные из файла берутся и вставляются в нужное поле. А вот самая нижняя строчка, с функцией EVENT не работает как надо. То есть из файла данные не берет, а прописывает в поле ввода +iimGetExtract()+.
Подскажите как надо записать эту нижнюю строчку с функцией EVENT правильно, чтоб брались данные из текстового файла и вставлялись в поле ввода?

dvitkovs2
а вас не смущает то, что у вас используются одинарные кавычки в функции iimPlayCode(), но при этом вызов iimGetExtract() в примере с EVENT, вы осуществляете из двойных кавычек?

InfSub
вот так надо?

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

Выделить код

Код:

iimPlayCode('EVENTS TYPE=KEYPRESS SELECTOR="HTML>BODY>MAIN>HEADER>DIV>DIV:nth-of-type(3)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>FORM>DIV>DIV>DIV>DIV>INPUT" CHARS="'+iimGetExtract()+'"');


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

dvitkovs2

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

Выделить код

Код:

alert(iimGetExtract())


скриншот в студию

Если делать такой командой:   

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:NoFormName ATTR=NAME:username CONTENT='+iimGetExtract());


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


В общем не понятно. Почему текст из файла не вставляется такой строкой (EVENT):

с EVENT

Выделить код

Код:

iimPlayCode('EVENTS TYPE=KEYPRESS SELECTOR="HTML>BODY>MAIN>HEADER>DIV>DIV:nth-of-type(3)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>FORM>DIV>DIV>DIV>DIV>INPUT" CHARS="'+iimGetExtract()+'"');


вроде записано правильно, а поле ввода всё равно пустым остаётся

dvitkovs2
так по скрину видно что у вас нет текста в iimGetExtract()

30-09-2018 22:07:31
dvitkovs2
приведите кусок кода начиная с импорта данных из файла и заканчивая строкой с event

30-09-2018 22:14:55
dvitkovs2
хотелось бы напомнить что значение iimGetExtract() хранится только до следующего вызова iimPlayCode()
т.е. если вы получили значение через !extract после чего еще раз вызывали iimPlayCode() то после второго вызова - значение iimGetExtract() будет равно булевому false, либо значению переданному через !extract именно в последнем iimPlayCode()
чтобы этого избежать, используйте промежуточную переменную

30-09-2018 22:18:15
для примера:

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

Выделить код

Код:

iimPlayCode('set !extract 123')
var result=iimGetExtract()
alert(iimGetExtract()) // выведет 123
iimPlayCode('')
alert(iimGetExtract()) // выведет пустоту
alert(result) // выведет 123

InfSub
Благодарю! Получилось, вставляет текст из файла с такой промежуточной переменной   login=iimGetExtract();

Здравствуйте! Я давно не использовал расширение iMacros for Firefox, да и не знаток js, так что извините если для кого вопрос буде обыденным.
А теперь собственно к вопросу, имеется код:

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

Выделить код

Код:

var macros = '';
var n = '\n';
macros += 'URL GOTO=https://link.na.kran' + n; /*здесь ссылка на кран*/
for (var i = 1; i = 3; i++) { /* здесь я присваиваю начальное значение i=1 с приращением +1, цикл должен был, как я думал, завершиться когда i=3*/
macros += 'TAG POS=1 TYPE=BUTTON FORM=NAME:NoFormName ATTR=TXT::Faucet' + n;
macros += 'WAIT SECONDS=3600' + n;
iimPlayCode(macros);} /*здесь я закрываю тело цикла*/


Когда я закрываю тело цикла вместо того чтобы завершиться на i=3 происходит следующее: 1-й проход как и ожидалось, 2-й раз проходит ссылку и 2 раза тело цикла, 3-й раз проходит ссылку и 3 раза тело цикла, ..., пока не остановишь. Где я ошибся? И возможно-ли запуститть цикл на определённое время, например на 4 часа? Так же интересует возможно-ли через расширение iMacros управлять приложениями в области уведомлений Windows?

koljan8115 пишет

Где я ошибся?

koljan8115 пишет

for (var i = 1; i = 3; i++)

ваше условие (расшифровываю):
при старте цикла присваиваем переменной i значение 1
во всех следующих итерациях (повторениях цикла) у вас выполняются следующие действия: присваиваем переменной i значение 3, проверяем i равно true, результат проверки true (так как переменная не равна false или null, или 0)
обращаю ваше внимание, что в вашем примере, вы проверяете не на равенство чему либо в вашем цикле, а присваиваете значение и потом просто проверяете значение переменной на true/false (собственно, в этом и ошибка)

koljan8115 пишет

возможно-ли запустить цикл на определённое время, например на 4 часа?

да, в начале скрипта, присваиваете переменной, например, переменной start_time - текущее время (в формате timestamp - в миллисекундах), прибавляете к ней 4*60*60*1000 (часы*минуты*секунды*миллисекунды) далее сравниваете текущее время (в миллисекундах) c переменной start_time

koljan8115 пишет

возможно-ли через расширение iMacros управлять приложениями в области уведомлений Windows?

что вы имеете ввиду под приложениями в области уведомлений?
пример работы с внешними приложениями есть в Мини FAQ на нашем форуме, в разделе iMacros (запуск внешней программы с аргументами из js-скрипта)
если приложение умеет работать через командную строку/принимать команды, то скорее всего удастся, что-то с ним сделать через iMacros версии 8.9.7

Спасибо за пояснения к коду!
Насчет внешнего приложения имелся OpenVPN. Оно ушло в трей, там его основной функционал. Смысл был в том чтобы переходя на сайты, которые блокирует РосКомНадзор поднималось VPN-соединение, на других же вкладках(которые не блокирует РКН) VPN отключался. Не знаю, возможно только такое или нет?

koljan8115 пишет

OpenVPN

OVPN у вас работает для всего ПК а не для конкретной вкладки в браузере

спойлер про незнание js

koljan8115 пишет

не знаток js

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


06-10-2018 23:01:55
koljan8115
в дополнение к предыдущему комменту:
если вы одномоментно работаете либо только с заблоченным сайтом либо с незаблоченным то вы можете либо стартовать OVPN либо убивать его через taskkill или если он позволяет закрывать себя консольно, то через командную строку самого OVPN
собственно где посмотреть как работать с внешними приложениями - ссылку дал выше
также примеры можно посмотреть в теме про капчу, там в примерах скриптов есть вызовы внешних утилит

Извиняюсь, я уже понял почему в условии цикла: for (var i = 1; i < 3; i++). Здесь 2 круга т.к. начальное значение i=1, а условие i<3  и значит 2 не приращается; но остаётся вопрос почему не сходится количество "Claim'ов"(нажатий на кнопку).
Прогоняя цикл с условием for (var i = 1; i < 4; i++) видно что в первом кругу 1 клайм, во втором - 2, в третьем - 3, конец цикла, т.е. в сумме 6 клаймов, а не 4. Почему?

koljan8115
что такое клайм и где, собственно, видно, что их стало 3? или вы говорите о том что у вас переменная i стала равна 3?
и что такое 6 и 4? от куда эти значения взялись?
совершенно не понимаю вашей логики.. во всяком случае исходя из приведенного выше кода, в котором присутствует одна переменна i и по условию, данная переменная увеличивается на 1 в каждом цикле - пока условие возвращает true, т.е. в первом цикле i равно 1, во втором i равно 2, в третьем i равно 3, далее цикл прерывается исходя из условия i<4 или i ==3

для справки: раз уж вам лень было погуглить, i равно 3 пишется как i==3 (двойной знак равно - означает равенство, одинарный знак равенства - означает присвоение значения переменной)

Клайм, как написано выше - это клик по кнопке "Собрать". Числа немного другие, здесь я изменял код.
Тестировал я на этом коде:

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

Выделить код

Код:

var macros = '';
var n = '\n';
macros += 'URL GOTO=http://demo.imacros.net/Automate/TestForm1' + n;
macros += 'TAG POS=1 TYPE=INPUT:TEXT FORM=ID:demo ATTR=ID:name CONTENT=цикл' + n;
macros += 'WAIT SECONDS=10' + n;
for ( i = 1; i < 4; i++) {
macros += 'TAG POS=1 TYPE=INPUT:RADIO FORM=ID:demo ATTR=ID:medium' + n;
macros += 'WAIT SECONDS=5' +n;
macros += 'TAG POS=1 TYPE=INPUT:RADIO FORM=ID:demo ATTR=ID:large' + n;
macros += 'WAIT SECONDS=5' + n;
macros += 'TAG POS=1 TYPE=INPUT:RADIO FORM=ID:demo ATTR=ID:small' + n;
macros += 'WAIT SECONDS=7' + n;
iimPlayCode(macros);}


Здесь результат:
скрытый текст
c57e7c5eac2d.pngfcba9ab5374e.png5ce8718c783d.png

Как видно из цикла, насколько я понимаю, он должен был кликнуть по радиокнопке "Small" 3 раза, но вместо этого кликает 6 раз( 1 раз в первом круге, 2 раза во втором круге, 3 раза в третьем круге).

Как ты скрипт составил так он и работает !!!

У тебя сначала ставит галочку в чекбоксе medium
потом ждёт 5 секунд
потом ставит следующую галочку  large
опять ждёт 5 секунд
потом ставит следующую на small
и опять ждёт 7 секунд

и всё заново, новый цикл :|

так нахрена ты в одном цикле по всем чекбоксам  кликаешь ???
В итоге все равно последняя галочка ставится на small и так и остаётся.


Напиши что ты хочешь, что скрипт делать должен,
и зачем тебе цикл

PRESIDENT, Всё правильно так я и хотел но с одним исключением чтобы кликов по "Small" суммарно было 3 раза за 3 прохода, а не 6 раз за три прохода. Конечно я могу поставить i<3 и тогда цикл выполнится пусть за 2 круга, но сделает 3 клика по "Small". Но проблема в том, что я не могу выставить ни 4 клика ни 5 кликов, так как за 2 круга совершается 3 клика по "Small", а за 3 круга уже 6 кликов.
Почему в одном чекбоксе клики сделаны? Так это для наглядности чтобы не ждать по 1 часу( в последствии хочу цикл использовать на кране).

07-10-2018 18:51:49

PRESIDENT пишет

и всё заново, новый цикл

Почти, только на втором круге делается почему-то всё дважды, а на третьем - трижды, если добавить четвертый круг - то четырежды и тд.
А нужно первый круг единожды(каждое действие), второй круг снова тоже самое единожды, и тд.

07-10-2018 18:56:39
На скринах показано сколько действий делает каждый круг, где видно больше строк - это всё новый круг, каждый скрин это отдельный круг.

Руки бы повыдергивать за такую писанину :(
macros += ...
тут ты в перемененную macros  добавляешь все новые команды, т.е. к старым добавляются новые.

Пиши нормально и будет работать нормально.



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

Выделить код

Код:

iimPlayCode('URL GOTO=http://demo.imacros.net/Automate/TestForm1');
iimPlayCode('TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:name CONTENT=цикл');
iimPlayCode('WAIT SECONDS=10');

for (i = 1; i < 4; i++){
iimPlayCode('TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:medium');
iimPlayCode('WAIT SECONDS=5');
iimPlayCode('TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:large');
iimPlayCode('WAIT SECONDS=5');
iimPlayCode('TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:small');
iimPlayCode('WAIT SECONDS=7');
}


твой вариант

Выделить код

Код:

var macros = '', n = '\n';
macros += 'URL GOTO=http://demo.imacros.net/Automate/TestForm1' + n;
macros += 'TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:name CONTENT=цикл' + n;
macros += 'WAIT SECONDS=10';
iimPlayCode(macros);

for (i = 1; i < 4; i++){
var macros = '';
macros += 'TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:medium' + n;
macros += 'WAIT SECONDS=5' +n;
macros += 'TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:large' + n;
macros += 'WAIT SECONDS=5' + n;
macros += 'TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:small' + n;
macros += 'WAIT SECONDS=7';
iimPlayCode(macros);}

Здравствуйте! Подскажите как в Javascript, работающем в цикле сделать чтоб включалась команда PAUSE в заданное время, например в 22:38 по времени компьютера?
То есть чтоб результат был аналогичен нажатию кнопки пауза\продолжить в браузере фаерфокс 56 и аймакрос 8.9.7

Вот тут есть один скрипт, который вроде как должен был бы работать, да не работает почему-то. Там простую операцию делает: открывает в цикле одну и ту же страницу сайта. И в заданное время надо чтоб скрипт сделал паузу. А потом в заданное время снова продолжил бы цикл дальше.
Вот сам скрипт:

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

Выделить код

Код:

for(a=1; a<99999; a++) { iimDisplay('Номер '+a);

   iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=https://2ip.ru/');
   
function getTime(date){
   
  return date.toLocaleTimeString('en-US', {
    hour12: false,
    hour: "numeric",
    minute: "numeric",
    second: "numeric"
  });
}
 
var createDate = function(time){
  return new Date('01.01.2000' + time);
}
 
var loop = {
  act: true,
  doNotPlay: [
    { from: createDate('13:33:00'), to: createDate('13:34:00') },
    { from: createDate('13:45:00'), to: createDate('13:46:00') },
  ],
  start : function() {
    // проверка на то что текущая дата между датами
    window.setInterval(function(){
      this.act = this.doNotPlay.every(function(dates){
        var currentDate = createDate(getTime(new Date()));
        if (dates.to - currentDate < dates.to - dates.from && dates.to - currentDate > 0) {
          return false;
        } else return true;
      });
    }, 1000);
 
    // job
    window.setInterval(function(){
       if (this.act) {
         iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=https://2ip.ru/');
         iimPlayCode('PAUSE');
       }
      this.act && console.log('action: ' + new Date().toString());
    }, 1000);
  }
};
loop.start();


}


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

Герман пишет

да не работает почему-то

ох уж эти горе программисты, все бы им в цикл запихнуть, и инициализацию функции, и setInterval ....

Герман пишет

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

есть - пишется за 5 минут - час, в зависимости от знаний и умения гулить
принцип такого скрипта - описан несколькими постами выше

InfSub пишет

есть - пишется за 5 минут - час, в зависимости от знаний

не, ну за 5 минут и даже за час, это вы явно преувеличили! Я тут уже несколько дней не могу состряпать такой скрипт, чтоб паузу делал в заданное время :(

14-10-2018 23:16:38
Понял только что всё в кучу пихать в цикл не надо. Это грубейшая ошибка, и так не бывает. Надо как-то иначе, по отдельности (типа мухи отдельно, коклеты отдельно)..

Герман пишет

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

Могу предложить костыль: перед запуском скрипта вручную высчитывате количество секунд до нужного для паузы времени и перед командой PAUSE вставляете команду WAIT SECONDS=хххтутКоличествоСекундДоПаузы

udalov
а зачем пауза?
либо пауза либо вайт секондс

15-10-2018 22:58:13

Герман пишет

это вы явно преувеличили!

хотите сказать 4 строчки текста пишутся больше? даже с учетом гугла?

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

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

Выделить код

Код:

var r=prompt('Остановить в, (чч:мм):').split(':');
var date = new Date();
var stop = +new Date(date.getFullYear(),date.getMonth(),date.getDate(),r[0],r[1]);
if(Date.now()>=stop){iimPlayCode('pause');};


писалось 10 минут с учетом того, что давно с объектом Date() не работал и надо было подсмотреть его методы + плюс потестить

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

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

Выделить код

Код:

if(Date.now()>=+new Date(2018,09,15,23,10)){iimPlayCode('pause');};

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

dim222 Удаленный доступ к рабочему столу? Закинуть ботов на VPSку?
Логировать работу ботов на удалённый сервер?
Можно и без WebSocket посылать данные обычными XMLHttpRequest и fetch запросами в обход браузерных кроссдоменных ограничений.

InfSub пишет

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

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

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

Выделить код

Код:

function getTime(date){
   
  return date.toLocaleTimeString('en-US', {
    hour12: false,
    hour: "numeric",
    minute: "numeric",
    second: "numeric"
  });
}
 
var createDate = function(time){
  return new Date('01.01.2000' + time);
}
 
var loop = {
  act: true,
  doNotPlay: [
    { from: createDate('13:33:00'), to: createDate('13:34:00') },
    { from: createDate('13:45:00'), to: createDate('13:46:00') },
  ],
  start : function() {
    // проверка на то что текущая дата между датами
    window.setInterval(function(){
      this.act = this.doNotPlay.every(function(dates){
        var currentDate = createDate(getTime(new Date()));
        if (dates.to - currentDate < dates.to - dates.from && dates.to - currentDate > 0) {
          return false;
        } else return true;
      });
    }, 1000);
 
    // job
    window.setInterval(function(){
       if (this.act) {
         iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=адрес');
         iimPlayCode('PAUSE');
       }
      this.act && console.log('action: ' + new Date().toString());
    }, 1000);
  }
};
loop.start();


правда не доведен до ума. А так в нём есть очень хорошая функция, типа будильника\таймера по установленному времени:

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

Выделить код

Код:

{ from: createDate('13:33:00'), to: createDate('13:34:00') },
{ from: createDate('13:45:00'), to: createDate('13:46:00') },


то есть таким образом можно задать столько таймеров\будильников сколько надо. И они будут в назначенное время ставить скрипт на паузу и в нужное время снова возобновлять работу. Вот если б так реализовать, вернее довести этот код до ума, было бы вообще супер!
Ну благодарю что показали простейший вариант кода для паузы. Но я все равно буду пытаться реализовать вариант скрипта, код которого я тут выложил. Мне кажется сам код в принципе рабочий, только надо что-то подправить. Что именно пока не знаю, но думаю загвоздка может быть тут:
скрытый текст
7yBLYD

то есть когда запускаю скрипт, то происходит переход по указанному адресу и потом пауза и всё, стоит на паузе. Явно в этих строчках косяк. Как-то иначе должно быть записана эта часть скрипта? :(

InfSub

Squatter пишет

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

Ok! Допустим каждый бот посылает данные на сервер в формате .json.
Но как(чем) их обработать и вставить в нужные div-ы тяму васче не хватает. При этом обновление должно происходить в реальном времени.

dim222 Можно на php принять и обработать.
Самое простое - закидываем на любой шаред два файла.

Пустой log.txt, куда будет писаться лог

и какой-нибудь

recording_log.php в кодировке UTF-8 без BOM следующего содержимого

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

Выделить код

Код:

<?php
#Принимаем входные данные JSON
$json_str = file_get_contents('php://input');
#Декодируем json в объект
$obj = json_decode($json_str);
#Дальше можно циклом foreach() перебрать объект или как ниже по ключам выбирать из объекта параметры нужные для логирования
#Собираем в переменную $text нужные параметры объекта для сохранения (конкатенация в php идёт через точку)
$text = $obj["key1"] . "\n" . $obj["key2"] . "\n" . $obj["key3"] . "\n";
$text .= str_repeat("=", 50);//Прибавляем разделитель для украшательства
$text .= date('Y-m-d H:i:s') . "\n";//Прибавляем текущую дату и время если нужно
#Открываем файл куда логируем действия
$file = fopen("log.txt", "a");
#Записываем в файл содержимое переменной $text
fwrite($file, $text);
fclose($file);//Закрываем файл
?>


И посылаем аяксом JSON на этот файлик recording_log.php

Вывести значение или информацию о переменной можно
var_dump($var);
или
echo print_r($var);

Можно логировать сразу в БД и кошерно выводить в виде динамической странички, для этого знакомьтесь с SQL языком запросов.
Можно разбить на несколько логов(для каждого бота свой) и идентифицировать каждого бота по кукисам или URL параметрам.
Вариантов много. ;)

Squatter
Спасибо за пример !!!!
Буду разбираться!

Squatter
Поправь пожалуйста, где ошибка?

Ключ-значение приходят в виде пустых строк,в log.txt  записывается только дата.

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

Выделить код

Код:

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

var x = new X();
    x.open('GET','https://code.jquery.com/jquery-3.3.1.min.js',false);
    x.send();
    eval(x.response);
    
   $ = window.$,
   JQuery = window.JQuery;


var url = "http://test.ru/recording_log.php";
var data = {"key1":"value1","key2":"value2","key3":"value3"};

$.post(url, data, function(response) { 
    // Do something with the response 
}, 'json');

Squatter
Вообщем получилось вот так

js

Выделить код

Код:

var X = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
var someObj = {"key1":"value1","key2":"value2","key3":"value3"};

var x = new X();
    x.open('POST', 'http://test.ru/recording_log.php');
    x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');            
    x.send('param=' + JSON.stringify(someObj));


php

Выделить код

Код:

<?php
$param = json_decode($_REQUEST["param"]);
$result = "key1 - ".$param->key1. "\n" . "key2 - ".$param->key2. "\n" . "key2 - ".$param->key2. "\n";
$result .= str_repeat("=", 50);//Прибавляем разделитель для украшательства
$result .= date('Y-m-d H:i:s') . "\n";//Прибавляем текущую дату и время если нужно
#Открываем файл куда логируем действия
$file = fopen("log.txt", "a");
#Записываем в файл содержимое переменной $text
fwrite($file, $result);
fclose($file);//Закрываем файл
echo print_r($var);
?>

Герман
а включить голову и изменить pause на wait seconds= не судьба?
или дописать этот же код на обратное действие, что с такого-то времени работаем дальше?
уважаемые, включаем голову, а то от ваших вопросов уже материться хочется

17-10-2018 13:35:48

Герман пишет

то есть когда запускаю скрипт, то происходит переход по указанному адресу и потом пауза и всё, стоит на паузе. Явно в этих строчках косяк. Как-то иначе должно быть записана эта часть скрипта?

да-да, именно так и есть, как в анекдоте где бухал-бухал, а потом печенькой отравился dash1.gif

dim222

    Правильно. Вот пример с циклом, логируем и ключ и значение.
    В заголовке ставим application/json

js

Выделить код

Код:

var X = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
    var someObj = {key1:"value1",key2:"value2",key3:"value3"};
    var x = new X();
    x.open('POST', 'http://test.ru/recording_log.php');
    x.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    x.send(encodeURIComponent(JSON.stringify(someObj)));


php

Выделить код

Код:

<?php
#Принимаем входные данные JSON
$json_str = file_get_contents('php://input');
#Декодируем json в объект
$obj = json_decode(urldecode($json_str), true);
$result = str_repeat("=", 30);//Ставим разделитель
$result .= date('Y-m-d H:i:s') . "\n";//Прибавляем текущую дату и время если нужно
foreach ($obj as $key => $val) {
    $result .= $key . " => " . $val . "\n";
}
#Открываем файл куда логируем действия
$file = fopen("log.txt", "a");
#Записываем в файл содержимое переменной $result
fwrite($file, $result);
fclose($file);//Закрываем файл
?>


Можно ещё пару проверок добавить на входящий json


php

Выделить код

Код:

<?php
$json_str = file_get_contents('php://input');

if(is_array(($obj = json_decode(urldecode($json_str), true))) &&//Это массив, а не что-то ещё
   json_last_error() == JSON_ERROR_NONE)//Ошибок при декодировании JSON нет
{
    $result = str_repeat("=", 30);
    $result .= date('Y-m-d H:i:s') . "\n";
    foreach ($obj as $key => $val) {
        $result .= $key . " => " . $val . "\n";
    }
    $file = fopen("log.txt", "a");
    fwrite($file, $result);
    fclose($file);
}
?>

Да, кстати, для тех, кто не знает, чтобы запрос отображался на вкладке "Сеть"

скрытый текст
b4269ff15b2658ea6d7e3cbc6c1c877b.jpg

его нужно формировать не через конструктор, а в контексте текущей вкладки

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

Выделить код

Код:

var someObj = {key1:"value1",key2:"value2",key3:"value3"};
    var x = new window.XMLHttpRequest();
    x.open('POST', 'http://logs.ru/recording_log.php');
    x.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    x.send(encodeURIComponent(JSON.stringify(someObj)));


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

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

InfSub пишет

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

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

Выделить код

Код:

if(Date.now()>=+new Date(2018,09,15,23,10)){iimPlayCode('pause');};

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

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

Выделить код

Код:

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

   iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=https://whoer.net/'); 
   if(Date.now()>=+new Date(2018,10,17,23,09)){iimPlayCode('pause');};

}

Герман
RTFM по функции Date() конкретно по тому как указывается номер месяца

InfSub
удалено, избыточное цитирование
Номер месяца указал на 1 ранее. Всё равно не фунциклирует. Видать нерабочий код вы тут выложили. Надо ж было б хоть проверить, прежде чем вылаживать. А может кто-нибудь ещё захочет паузу по времени внести в скрипт, попытается воспользоваться вашим кодом и ... на ны. А жаль(

скрипт записан по правилам указывания номера месяца, но паузы по времени так и нет

Выделить код

Код:

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

   iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=https://whoer.net/');    
 if(Date.now()>=+new Date(2018,09,18,23,07)){iimPlayCode('pause');};

}


InfSub

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

Del

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

18-10-2018 23:43:33
точнее не в FAQ а в правилах  раздела iMacros

InfSub пишет

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

Сейчас проверил iMacros, точнее фаерфокс взял другой версии: (56-той) - работает! А на 52-рой не работало. Но не работало как оказалось лишь потому, что там в браузере настройки были не такие. Сама версия iMacros и там и там 8.9.7. А так в принципе работает! Поэтому выражаю вам огромную благодарность! Благодарю за потраченное время и ресурсы! И забираю свои слова обратно, на счёт кривости кода. Код - замечательный и рабочий! Ещё раз СПАСИБО вам за труды!!! :)

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

InfSub пишет

изменить pause на wait seconds= не судьба?

Просто изменить pause на wait seconds= оно-то можно, но что получится? Получится, что при достижении заданного времени будет срабатывать пауза в цикле. То есть по кругу, постоянно, пока работает цикл. Вот код, где вместо pause поставлено WAIT SECONDS=


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

Выделить код

Код:

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

   iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=https://whoer.net/');    
   if(Date.now()>=+new Date(2018,09,19,10,53)){iimPlayCode('WAIT SECONDS=10');};
}


получается, что после того WAIT SECONDS= истекло, цикл дальше работает и сразу же снова включается WAIT SECONDS=. И так по кругу.
И как это устранить? Надо как-то аннулировать "дату"?

19-10-2018 11:16:18

InfSub пишет

или дописать этот же код на обратное действие, что с такого-то времени работаем дальше?

Так тоже пробовал, но что-то не идёт. Видать "pause" не даёт включиться команде continue (дальше). Вот дописанный код, где добавлено действие, что с такого-то времени работаем дальше:

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

Выделить код

Код:

var r=prompt('Остановить в, (чч:мм):').split(':');
var p=prompt('Продолжить в, (чч:мм):').split(':');

var date = new Date();
var stop = +new Date(date.getFullYear(),date.getMonth(),date.getDate(),r[0],r[1]);
var play = +new Date(date.getFullYear(),date.getMonth(),date.getDate(),p[0],p[1]);

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

   iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=https://whoer.net/');    
if(Date.now()>=stop){iimPlayCode('pause');};
if(Date.now()>=play){continue;};

}


pause стоит и всё. И не даёт продолжать дальше. Может надо чтоб сброс паузы сначала сработал?

Герман ну детские-то совcем вопросы может не будете задавать или вас в гугле забанили?
может быть прочитаете что такое pause и что такое wait seconds= ? да и про условные операторы - тоже!
если вы поставили скрипт на паузу - запустите вы его - только вручную, по факту данная команда нужна в основном только для отладки
что такое continue Герман? вы хоть читали что это и как оно вообще работает и где?

читайте про условный оператор if else (js), а также про логически операторы И и ИЛИ (js) и wait seconds (iMacros)
вариантов составления кода, выполняющего то,что вы хотите - масса, все зависит от того, чего вы хотите добиться

Не могу додуматься как это реализовать.

У меня есть в скрипте разные условия 8 штук, которые можно включать и выключать.
Пользователь может выбирать какие включать, а какие выключать условия.
Например можно включить все или 2 и 3 или 1,4,5 и 7
И если все включенные условия верны, то скрипт сохраняет логин в документ.

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

C условиями, операторами И, ИЛИ знаком и применять умею.

Для примера привёл код

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

Выделить код

Код:

// если написать выключить, то данное условие не сработает
// пользователь может влючить не все, а может и одну, а может 3, по разному.

var условие1 = "включить"
var условие2 = "включить"
var условие3 = "выключить"
var условие4 = "включить"
var условие5 = "выключить"
var условие6 = "включить"
var условие7 = "включить"
var условие8 = "выключить"

if(условие1 == "включить"){

if ( .... ){
// верно
}else{
// не верно
}

}

if(условие2 == "включить"){

if ( .... ){
// верно
}else{
// не верно
}

}

if(условие3 == "включить"){

if ( .... ){
// верно
}else{
// не верно
}

}

// и т.д. до 8 услвия

// Здесь надо, чтобы скрипт понял какие условия включены, 
// чтобы именно их проверял 
// и все включённые условия должны быть верными, 
// чтобы скрипт сохранил логин.

Алим
а при чем тут логин? какое он и его сохранение - имеет отношение к вопросу?

Алим пишет

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

так у вас это и реализовано, в чем проблема-то собственно?

InfSub
В каждом из 8-ми условий есть свои условия: верно или не верно

После того, как эти условия пройдут (1 цикл), нужно 9-ое условие в котором должны сравниваться все включенные условия (условия которые были включены пользователем) и эти сраниваемые условия должны быть все верными, то есть после первого цикла в этих включенных условиях должно пройти всё верно, а если в этих включенных условиях хоть одна была не верной, то не верно - не сохраняет логин.

Алим
ну например только в начале скрипта var check=1; а далее, при проверке, если условие где-то не верно check=0; 
потом проверяешь 0 - не сохраняем, 1 сохраняем

InfSub
В 8-ми условиях где не верно, указал var check = 0.

Создал 9-ое условие

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

Выделить код

Код:

if(check == 0){

iimDisplay('не сохраняем логин')

}else{

iimDisplay('сохраняем логин')

// код для сохранение логина

}


Всё заработало, как нужно.
Натолкнули на правильные мысли.
Спасибо большое.

Алим
you welcome

Здравствуйте. Подскажите по коду

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

Выделить код

Код:

iimPlayCode('TAG POS=5 TYPE=DIV ATTR=TXT:Краткая<SP>информация* EXTRACT=TXT'); 
data1=iimGetExtract().split('Подписчики: ')[1]; 
alert(data1);


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

81 человек уке вап com/in/phan-khuong-91230aa0

Как убрать всё после "человек"?
Пробую через trim() но это же не то?

InfSub

udalov

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

Выделить код

Код:

.match(/^\d+ [а-я]+/ig);

большие цитаты - прячутся под спойлер

Hamzat пишет

Зебра

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

Как верно подметил модератор, код вырван из объекта, если вы не разбираетесь в этом, то мне кажется вам рано соваться в такие вещи, лучше изучите немного основы 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


Скажите, а как сохранять куки в json файл (или как удобно на диск)? Вот например зашли мы на сайт, авторизовались и теперь надо сохранить куки. Как это сделать? А то вот тут Hamzat написал, что сохраняем куки, а как это сделать не написал:
скрытый текст

Выделить код

Код:

imJS.getCookie('vk.com');    // Получаем куки и сохраняем в json файл или как удобно на диск


Это надо примерно такой командой
скрытый текст

Выделить код

Код:

SAVEAS TYPE=EXTRACT FOLDER=C:\\FILE=kukis.JSON


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


замечание

InfSub

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

сохранять можно так как вам удобно: удобно с помощью функции iMacros - сохраняйте ей, не удобно, читайте форум, тут давался вариант js-функции

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

Потому потратьте несколько дней на информацию о разработке расширений з браузеру и не будете зависеть от кого то.

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

Не поддерживается в iMacros 10.x.x.x

CLICK
EVENT, EVENTS
FILEDELETE
FILTER
ONDIALOG
PROXY
!POPUP_ALLOWED
!SINGLESTEP
File upload is not supported
iMacros for Firefox is disabled in Private Browsing mode due to restrictions in Firefox.


Подозреваю, что дело тут в API WebExtensions. Если со всеми хаками реализовать утерянные функции iMacrosa для quantum на новом API, то наверно расширение просто не пройдёт валидацию на AMO.

Duh пишет

на iMacros проще все, но вы портите знания программирования. лучше сразу учится чистому язику программирования.

Неистово плюсую.

Здравствуйте. Скажите, если у меня в js есть две или более переменных variable1 и variable2, то как мне их сохранить в файл в одну сроку?

Вариант с одной переменной работает:

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

Выделить код

Код:

iimPlayCode('SET !EXTRACT ' + variable+ '\nSAVEAS TYPE=EXTRACT FOLDER=C:\\4imacros\\ FILE=results.txt')


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

Выделить код

Код:

iimPlayCode('SET !EXTRACT ' + variable+ '\nEXTRACT ' + variable2+ '\nSAVEAS TYPE=EXTRACT FOLDER=C:\\4imacros\\ FILE=results.txt')


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

InfSub

udalov

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

Выделить код

Код:

iimPlayCode('SET !EXTRACT "' + variable+ '"\nEXTRACT "' + variable2+ '"\nSAVEAS TYPE=EXTRACT FOLDER=C:\\4imacros\\ FILE=results.txt')


05-11-2018 01:27:25

Squatter пишет
Duh пишет

на iMacros проще все, но вы портите знания программирования. лучше сразу учится чистому язику программирования.

Неистово плюсую.

поддерживаю

Есть у мене макрос для удаления своих постов из груп вконтакте.

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

Выделить код

Код:

for (nomc=0;nomc<=25;nomc++){
pr3=iimPlayCode('SET !TIMEOUT_STEP 1 \n TAG POS='+nomc+' TYPE=A ATTR=TXT:Удалить<SP>запись \n WAIT SECONDS=0.4');
if (+pr3 == -921) {
nomc=26;
}
}


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

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

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

Выделить код

Код:

"TAG POS='+nomc+' TYPE=A ATTR=TXT:Удалить<SP>запись"


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

Через

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

Выделить код

Код:

document.querySelector("#post-разные цифры_разные цифры > div > div.post_header > div > div.ui_actions_menu_wrap._ui_menu_wrap > div.ui_actions_menu._ui_menu > a:nth-child(1)").click();


код публикуется в тегах code под спойлером
не работает. Это " #post-разные цифры_разные цифры" - всегда разные и не последовательные. В iMacros наверно другой подход выполнения команд. Я пока не могу найти в коде расширения ту команду. Помогите, если знаете.


InfSub

Duh пишет

#post-разные цифры_разные цифры"

так извлеките их через extract (впрочем получение через DOM-модель тоже ни кто не отменял), а дальше либо js (предпочтительней), либо event

Здравствуйте! Скажите, как спарсить ники-имена пользователей на одном из форумов, если в обычном стандартном способе там всё сохраняется не в столбик, а всё в одну строку? Как быть?

Komsomoletz
ну так посмотрите в каких тегах имя пользователя, есть ли стили и т.д. и от этого пляшите в своем скрипте

InfSub пишет

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

А что значит в каких тегах? это как посмотреть можно, где? в исходном коде страницы сайта что-ли? А  как они там выглядят вообще эти теги?

... EXTRACT=TXT ...
Замени на  ... EXTRACT=

HTM

...
и потом покажи тут что у тебя *.тхт файл сохранилось.

PRESIDENT пишет

и потом покажи тут что у тебя *.тхт файл сохранилось.

получился очень большой файл, много мусора. Ладно, фик с ним. А подскажите лучше как цикл пустить наоборот, то есть чтоб не с 1 повторял по кругу, а с конца, допустим с 100 и далее 99, 98, 97, 96 и т.д. до 1 (или до 0)
Вот цикл:

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

Выделить код

Код:

for(i=1; i<100; i++){ iimDisplay(+i);

  iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:'+i);
  iimPlayCode('TAG POS=1 TYPE=TD ATTR=TXT:* EXTRACT=HTM\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=Name.txt');
  }


Как его переиначить, чтоб отсчёт был обратный? что для этого надо? + на - поменять? и < поменять на > ? Или не так всё просто?

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


Нужно плюс на минус заменить, больше на меньше, и естественно не от единицы до ста считать, а наоборот.


И вообще такие детские вопросы даже моя семилетняя дочка и то легко гуглит.

Приветствую. Не могу извлечь цифры на веб странице (биржа).
На веб странице есть цифры, а в html нет.

Ссылка на страницу (регистрация не требуется)

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


Выделил в каком месте нужно извлекать меняющиеся цифры.
скрытый текст
24251702_m.png

С такой ситуацией не сталкивался.

Алим пишет

С такой ситуацией не сталкивался.

а GET запросами по паблик-АПИ не пробовал?
вот у них тут есть информация


я вот писал для хита, лови пример
скрытый текст

Выделить код

Код:

var pair1 = 'ETHTUSD';
 var pair2 = 'BTCTUSD';
 var pair3 = 'ETHBTC';
 var url_pair1 = 'https://api.hitbtc.com/api/2/public/ticker/'+pair1+'';
 var url_pair2 = 'https://api.hitbtc.com/api/2/public/ticker/'+pair2+'';
 var url_pair3 = 'https://api.hitbtc.com/api/2/public/ticker/'+pair3+'';

function kotirovki_pair1() {
 var text_pair1 = get(url_pair1);
// alert(text_pair1);
 var a = JSON.parse(text_pair1);
 asks_pair1 = +a.ask;
 bids_pair1 = +a.bid;
};

////////////////////////////////////////////////////////////////////////////////////////////
function get(url_pair1) { //функция get запроса на hitbtc
  var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
  req.open('GET', url_pair1 , false);
  req.send();
  return req.responseText
};


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

InfSub

Komsomoletz пишет

А что значит в каких тегах? это как посмотреть можно, где?

Кликаете на пустом месте страницы сайта (либо на интересующем элементе страницы) правой кнопкой мыши, в выпадающем меню выбираете пункт "исследовать элемент", появится панель с разными вкладками и кнопками. Внимательно см0трите, выбираете стрелочку, пот0м нажимаете на интересующий вас объект на сайте. В поле с кодом страницы появятся вот такие элементы <div class= , это и будут теги интересующего вас элемента страницы. Найденные теги подставляются в код скрипта.

Для поиска тегов можно использовать дополнение FireBug.

Подскажите - как в селекторе по типу

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

Выделить код

Код:

EVENT TYPE=click SELECTOR="a[CLASS='text*']"


прописать *, где * - изменяющееся значение?

artemfedor
в EVENT не работают * и ?
только извлечь и подставить нужное значение или использовать js и DOM

Спасибо за намек, будем пробовать.

InfSub пишет

в EVENT не работают * и ?
только извлечь и подставить нужное значение или использовать js и DOM

Там же нечто, смахивающее на CSS селектор: a[class*='text'] или a[class^='text']

Infocatcher
честно говоря - совсем забыл про такой вариант записи, так как стараюсь не использовать EVENT в iMacros, а реализовывать все сразу за счет JS

Здравствуйте! Подскажите как создать условие, если страница не перезагрузилась за 60 сек и не обновилась (например интернет отключился или связь потеряна и происходит постоянная загрузка, но страница так и не обновляется и все данные на странице те же что и были), то выполняем другую команду, например continue?

Поиск нужного элемента на странице не подходит потому что все нужные элементы на странице есть, но что с них  толку, если это старые элементы. Страница-то не перезагрузилась и все элементы присутствуют. Но они не нужны. Нужны точно такие же но новые. А новых нет и не может быть пока страница не перезагрузится. А она и не перезагрузится, потому что соединения с сайтом нет (интернет есть, а с конкретным сайтом коннекта в определенный момент нет).
То есть ситуация такая: делаем REFRESH и страница начинает перезагружаться и перезагружается до бесконечности потому что нет коннекта с сайтом. Однако использовать некие элементы на странице нельзя потому что это старые, не обновленные.
Поэтому в данной ситуации представляется, что надо делать некую привязку ко времени загрузки страницы. В данном случае 60 сек. Если 60 сек прошло, но загрузка страницы не прекратилась, то выполняется условие. Вот только вопрос: как такое реализовать?

Всем здравости. Помогите вытащить данные из localStorage.
в нем 2 домена. один на котом нахожусь - с ним все просто, а второй от google
как с данными от google манипулировать?

Komsomoletz
проверяйте загрузилась ли страница, стандартный таймаут для любой страницы 60 секунд, если страница не загрузилась - будет ошибка

А что, с сегодняшнего дня на сайте загрузки аймакроса для фаерфокса уже нет старых версий для загрузки?  Всё уже? Прикрыли лавочку?
https://addons.mozilla.org/ru/firefox/a … /versions/

А подскажите где можно старые версии скачать? Может есть архив какой (по аналогии с ФФ)? В частности интересует 8.6.0.1 и 8.9.7

Komsomoletz

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

Выделить код

Код:

https://wiki.imacros.net/iMacros_for_Firefox_Legacy#Version_History

InfSub пишет

https://wiki.imacros.net/iMacros_for_Firefox_Legacy#Version_History

спасибо за подсказку, но там нету нужной версии аймакроса. Самая "низкая" там, это 8.8.2
А где взять для мозилы 6 версии? Или как советовал ПРЕЗИДЕНТ, для 3.6 версии Фаерфокса? Где взять? Раньше были, ещё совсем недавно, может неделю назад. А щас всё уже, хана. Позаблокировали всё что только можно. Заговор мирового правительства.
Но вопрос открытый: где взять? Может есть у кого, кто запасливый ив своё время успел скачать? Выложите пожалуйста!!!

Komsomoletz

Вот  нашёл в закромах.

PRESIDENT пишет

KomsomoletzВот  нашёл в закромах.

Спасибо большое! А может есть для Мозиллы 6.0? А то 3.6 хоть и хорошая версия мозиллы, но не открывает некоторые современные сайты. Я тут методом перебора установил что самая-самая версия на сегодняшний день которая годится для работы с современными сайтами это мозилла 6.0. Ниже нельзя, а выше - не целесообразно. Но проблема на неё найти аймакрос и блокировщик рекламы адблок тоже не найти. Подчистили и там уже. :(

Распакуй  тот архив и зайди .\Data\profile\extensions
скопируй оттуда имакрос и адблок плюс (все три папки)
и перенеси их в такую же дерикторую новой мазилы.

У меня последнее время стала подвисать MozillaFireFox 38.0.1/iMacros 8.9.2.1. Что можно сделать?

udalov пишет

Для поиска тегов можно использовать дополнение FireBug.

А что, уже и это дополнение убрали? Уже вообще что ли всё подчистили что только можно было?   102.gif

скрытый текст
DopolneniyadlyaFirefox(ru).1544303383.png

Подскажите пожалуйста как исправить код

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

Выделить код

Код:

iimPlay('CODE:SET !DATASOURCE login.txt\nSET !DATASOURCE_LINE '+i+'\nSET !EXTRACT {{!COL1}}');
  login=iimGetLastExtract();
   iimPlay('CODE:TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:NoFormName ATTR=* CONTENT="'+login+'"');


на аймакросе 7.3.0.0 (и 6-й мозилле) не хочет вставлять логин в нужное поле ввода. Главное этот же самый код прекрасно работает с аймакросом 8.8.2.1 (и выше). Понятно что ранние версии аймакросов не рассчитаны на современные коды, для них надо кое что изменять. Подскажите что в данном коде поменять, чтоб вставлялся логин из файла?

Может это поменять? SET !DATASOURCE_LINE
Если заменяю на такое SET !DATASOURCE_COLUMNS, то вставляется первый логин из файла, и потом всегда этот же первый логин и вставляется. А надо чтоб из файла по порядку в цикле брался и вставлялся.

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

Выделить код

Код:

iimPlay("CODE:CMDLINE !DATASOURCE login.txt\nSET !DATASOURCE_COLUMNS 2\nSET !LOOP 1\nSET !EXTRACT {{!COL1}}"); 
a=iimGetLastExtract();   
alert(a)

PRESIDENT

Спасибо большое!!! Получилось!!! :)
Сделал так:

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

Выделить код

Код:

iimPlay('CODE:SET !DATASOURCE login.txt\nSET !DATASOURCE_COLUMNS 1\nSET !LOOP '+i+'\nSET !EXTRACT {{!COL1}}');


Всё работает!

Здравствуйте.

Как сохранить страницу макросом? Ниже код не сохраняет,либо тхт,либо скриншот.Мне нужно капчу в папку сохранить.

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

Выделить код

Код:

VERSION BUILD=8970419 RECORDER=FX
SET !ERRORIGNORE YES
SET !ERRORCONTINUE YES
SET !EXTRACT_TEST_POPUP NO
TAB T=1
URL GOTO=https://sait.ru
REFRESH
WAIT SECONDS=30
SAVEAS TYPE=IMG FOLDER=C:\1 FILE=*
WAIT SECONDS=7


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


ссылки на сторонние ресурсы публикуются в тегах noindex под спойлером
Из папки cache тоже достать не удаётся.

Есть расширения отдельные для мазилы,сохранять картинки,но хочется макросом.

замечание

InfSub

Dima10000
вопрос капч широко освещен в соответствующей теме:
https://forum.mozilla-russia.org/viewtopic.php?id=68699

09-12-2018 15:36:55
капчу не сохраняют, ее скринят, и для этого в imacros есть соответствующая функция

InfSub,тема интересная,65 страниц,и в основном программы по разгадыванию капчи.Даже не думал,что не смогу просто её сохранить.

Dima10000
первый же спойлер в шапке темы 9про капчи) содержит пример кода, позволяющего сделать скриншот капчи и сохранить его

Не запускается даже.Там всё закомментировано ',зелёным цветом:

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

Выделить код

Код:

VERSION BUILD=8970419 RECORDER=FX
'если ошибка ,то пропустить
SET !ERRORIGNORE YES
SET !ERRORCONTINUE YES
SET !EXTRACT_TEST_POPUP NO
TAB T=1
URL GOTO=https://moskva.beeline.ru/customers/products/mobile/services/details/otpravka-sms/
REFRESH
WAIT SECONDS=30

if(iimPlayCode('SET !TIMEOUT_STEP 0\nTAG POS=1 TYPE=script ATTR=src:*recaptcha*')>0){
        f1='FRAME NAME=undefined\n';
        iimPlayCode('SET !TIMEOUT_STEP 0\n'+f1+'TAG POS=1 TYPE=DIV ATTR=ROLE:presentation'); 
        iimPlayCode('WAIT SECONDS=5'); 
        iimPlayCode('SET !TIMEOUT_STEP 0\nTAG POS=1 TYPE=iframe ATTR=src:*recaptcha/api2/frame?c=* extract=htm');
        f2='FRAME '+iimGetExtract().match(/name=".*?"/)+'\n';
        iimPlayCode('ONDOWNLOAD FOLDER=C:\\CapNum\\ FILE=cap.jpg WAIT=YES\n'+f2+'TAG POS=1 TYPE=DIV ATTR=class:rc-imageselect-payload CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT');

       }


В интернете прочитал,что скриншот страницы делают и обрезают.Но лучше если макрос сразу капчу сохранит.

Dima10000 пишет

SET !ERRORCONTINUE YES

это что? идем и читаем FAQ

...
да... пихать js в iim скрипт...
может быть вы прочитаете тему хоть чутка, разберетесь какие скрипты понимает iMacros, прежде чем задавать вопросы - уровня сложить a+b

Вот, нашёл решение,если кому нужно будет:

1.Загружаем страницу
2.Делаем скриншот всей страницы SAVEAS TYPE=PNG
3. Обрезаем капчу.
4.Переходим в другую вкладку imacros2.rucaptcha.com  вводим ключ key,загружаем картинку, и получаем ответ.Сохраняем  SAVEAS TYPE=TXT
5.Возвращаемся на первую вкладку и вводим.

Dima10000 пишет

2.Делаем скриншот всей страницы SAVEAS TYPE=PNG
3. Обрезаем капчу.

Нужно делать скрин элемента, а не всей страницы.
Как ты потом правильно обрежешь ?

Скрин элемента в инете не нашёл.
Спасибо за ответы,всё получилось.

Dima10000 пишет

Скрин элемента в инете не нашёл.

так в процитированном вами коде, в последней строке... EVENT:SAVE_ELEMENT_SCREENSHOT

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

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

Выделить код

Код:

for(i=1; i<1000; i++) {
// тут исполняемый код скрипта
}


как к нему ещё добавить другой цикл из 30, чтоб эти 30 постоянно повторялись как только дойдут до конца списка?

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

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

Выделить код

Код:

proxy_number = 1;
 for(i=1; i<1000; i++) {
// тут исполняемый код скрипта

proxy_number ++;
if (proxy_number >30) proxy_number = 1;
}

PRESIDENT
Спасибо! То, что надо!

Komsomoletz
в FAQ добавлен альтернативный ресурс со всеми версиями iMacros

Такая задача, нужно устанавливать юзерагенты из файла не рандомно, а по очереди, киньте кто-то код пожалуйста

Всем привет. Не могу понять, почему условие не работает как надо?
Ники одинаковые, а пишет, что alert("ники не совпали") :mad:

Извлекаются ники на сайте и через метод поиска match() отбираю только буквы, так как в никах приписаны различные не понятные сиволы.
Один из таких ников указал в переменной - ((macs))

Через гет запрос из локального html документа берёт ник
В файле proffilya.html одна строчка "<t>macs</t>"
В файле могут быть несколько ников и поэтому я делаю посик txt.match()

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

Выделить код

Код:

var ник = "((macs))"
var ник = ник.match(/[aA-zZ]+/)

var XMLHttpRequest=Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
var b=XMLHttpRequest();
b.open('GET','file:///C:\\папка\\proffilya.html',false);
b.send('');
var txt = b.responseText;

// Чтобы не создавать файл, прописал ник в переменной для удобства (тоже самое)
var txt = "macs"

alert(ник)
alert(txt.match(ник))

if(txt.match(ник) == ник){

alert("ники совпали")

}else{

alert("ники не совпали")

}

Алим
бардак

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

Выделить код

Код:

var a = "macs";
var ник = a.match(/[aA-zZ]+/);

if(ник == a) {
    alert("ники совпали");
} else {
    alert("ники не совпали");
}

karginaolga
То, что первый раз указили помогло .toString()
Спасибо. Мне именно через метод txt.match(ник) надо было в if
Так как, вы сейчас написали, так то да, будет работать.

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

Выделить код

Код:

var ник = "((macs))"
var ник = ник.match(/[aA-zZ]+/)

var XMLHttpRequest=Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
var b=XMLHttpRequest();
b.open('GET','file:///C:\\папка\\proffilya.html',false);
b.send('');
var txt = b.responseText;

alert(ник)
alert(txt.match(ник))

if(txt.match(ник) == ник.toString()){

alert("ники совпали")

}else{

alert("ники не совпали")

}

Алим пишет

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

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

Универсальный реплейс для спецсимволов

.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');

Пример

Выделить код

Код:

var userTxt = "Текст из локального файла";

var nodes = content.document.querySelectorAll("t");//Ищем на странице proffilya.html "<t>macs</t>"
for (let i of nodes) {
  var pattern = i.textContent.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');//Экранируем спецсимволы в паттерне
  if (userTxt.search(new RegExp('^'+pattern+'$', 'mg')) !== -1) continue;//Сравниваем с содержимым локального файла
  userTxt += i.textContent + '\r\n';//Добавляем уникальный ник к остальным в переменную userTxt
}

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

понадобилось через imacros подключать прокси и раньше пользовался дополнением Proxy Authentication, но сейчас оно уже я так понял не поддерживается, какой есть аналог для авторизации проксей?

Shejker
tor browser?

Shejker пишет

аналог для авторизации проксей?

Этот хоть и для "seamonkey", но ставиться без проблем и на FF. Попробуй

Здравствуйте.

Вопрос не по теме,которая идёт.
Как создать бесконечный цикл по условию: если в папке imacros появился файл 1.txt,то идём дальше,а пока его нет  ждём.

Dima10000
например с помощью !datasource проверять наличие файла (ошибка при чтении или нет)
вообще этот вопрос уже рассматривался ранее, в этой теме или в ее первой части, так что за подробностями в поиск

Так пробую, не получается:

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

Выделить код

Код:

SET !DATASOURCE C:\1.txt
SET !DATASOURCE {{!LOOP}}


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

InfSub

InfSub пишет

Shejker
tor browser?

нет Firefox Quantum,

скрытый текст
22f2ba5f8fe63cbe8516366d956f19fe-full.png

Shejker
вы не поняли, это был ответ, как вариант вместо прокси

10-01-2019 04:13:22
Dima10000
откройте wiki по iMacros и прочитайте как используется команда !DATASOURCE (какой синтаксис)

InfSub пишет

поставить плагин, если еще не стоит - нажать "запись" - ввести данные в форму на вашей странице - остановить запись - скопировать одержимое из файла #Current.iim и разместить на форуме, под спойлеров в тегах code

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

Выделить код

Код:

Tag waiting... 2.5(6)s
1    VERSION BUILD=10021450
2    URL GOTO=http://spb2.billing.interrao.ru:7777/ouafSPB2/cis.jsp?location=itemMaint&ITEM_ID=0783321851
3    FRAME F=8
4    TAG POS=1 TYPE=IMG ATTR=ID:IM_ITC:7$charGrid_addBtn
5    TAG POS=1 TYPE=DIV ATTR=ID:imacros-highlight-div
6    REFRESH
7    TAG POS=1 TYPE=IMG ATTR=ID:IM_ITC:7$charGrid_addBtn
8    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:7$EFFDT CONTENT=14.01.2019c
9    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:11$EFFDT CONTENT=14.01.2019v
10    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:10$EFFDT CONTENT=14.01.2019v
11    REFRESH
12    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:10$EFFDT CONTENT=14.01.2019v
13    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:4$CHAR_TYPE_CD CONTENT=PL-STATEc
14    REFRESH
15    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:11$CHAR_TYPE_CD CONTENT=PL-STATE
16    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:5$CHAR_TYPE_CD CONTENT=PL-PLACEc
17    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:10$CHAR_TYPE_CD CONTENT=PL-PLACE
18    TAG POS=1 TYPE=DIV ATTR=ID:dataDivision
19    REFRESH
20    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:4$CHAR_VAL CONTENT=PL-STATE-2c
21    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:11$CHAR_VAL CONTENT=PL-STATE-2
22    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:5$CHAR_VAL CONTENT=PL-PLACE-0c
23    TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ITC:10$CHAR_VAL CONTENT=PL-PLACE-0
24    TAG POS=1 TYPE=DIV ATTR=ID:dataDivision
25    REFRESH
26    FRAME F=1
27    TAG POS=2 TYPE=SPAN ATTR=TXT:Сохранить


сделал

Здравствуйте! Помогите пожалуйста как убрать лишнее в фразе Никому не говорите этот код! Код для завершения регистрации ЛК: 1584
тут надо убрать всё, оставив только число 1584
как это сделать через .replace в iim скрипте, подскажите пожалуйста?

Другими словами, надо чтоб только число сохранилось в буфер обмена, а остальная часть (буквы, знаки) удалилось. Это наверно проще всего использовать некую команду чтоб только на числа, или чтоб все буквы и знаки удалила и всё прочее тоже, а числа оставила. Подскажите пожалуйста что тут использовать лучше всего?

Denisovich

match(/\d+/)

Denisovich

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

Выделить код

Код:

URL GOTO=javascript:('{{!EXTRACT}}'.match(/\d+/))
SET !EXTRACT NULL
TAG POS=1 TYPE=BODY ATTR=TXT:* EXTRACT=TXT

PRESIDENT
записал так:

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

Выделить код

Код:

TAG POS=1 TYPE=P ATTR=TXT:Никому<SP>не<SP>говорите<SP>этот<SP>код!<SP>Код<SP>для<SP>за* EXTRACT=TXT
SET !var1 EVAL ("'{{!EXTRACT}}'.match(/d+/)")
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:second ATTR=NAME:code CONTENT={{!var1}}


вроде бы правильно, но нет: оно в результате вставляет в нужное поле слово undefined

17919 пишет

VERSION BUILD=10021450

сразу говорю,сносите это убожество, ставьте версию 8.9.7 iMacros на FF 30-40 Portable
Все ссылки есть в FAQ

приведите к примеру код второго скрипта, когда вы делаете "действие 2"
перед записью в настройках iMacros отключите подсветку объекта

опишите подробнее, вообще саму ситуацию, у вас всего 2 "действия" или их много?
в каком виде вы планируете ему подсовывать нужные данные, это список, к примеру, из 100 строк для заполнения 10 страниц или каким образом будут эти данные передаваться? или от куда браться?

InfSub
а это зачем? URL GOTO=javascript:
у меня скрипт iim, а не js. Хотя я попробовал и ваш вариант, но не подходит он. Не получается.

17-01-2019 20:40:34
InfSub
подскажите лучше что неправильно я записал в этом коде?

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

Выделить код

Код:

TAG POS=1 TYPE=P ATTR=TXT:Никому<SP>не<SP>говорите<SP>этот<SP>код!<SP>Код<SP>для<SP>за* EXTRACT=TXT
SET !var1 EVAL ("'{{!EXTRACT}}'.match(/d+/)")
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:second ATTR=NAME:code CONTENT={{!var1}}


или тут без URL GOTO=javascript: всё равно не обойтись?

Denisovich
это для старых версий, где eval не было
перед d+ поставьте обратный слеш
match(/\d+/)

17-01-2019 20:42:10

Denisovich пишет

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

это я не глядя скопировал у president

InfSub пишет

перед d+ поставьте обратный слеш

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

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

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

Выделить код

Код:

URL GOTO="javascript:window.scrollTo(0,(content.document.documentElement.scrollHeight)); void(0);" или 
 URL GOTO=javascript:window.scrollBy(0,5000)


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

нарушение правил размещения скриншотов в теме
не прокручивается всплывающее окно в инстаграмме. Выделение окна клики нажатия не помогают

InfSub

Рауф пишет

в инстаграмме

не пользуюсь, не в курсе, что там за код у страницы, скорее всего это какой-нибудь iframe
соответственно код должен быть приблизительно таким:

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

Выделить код

Код:

var myIframe = window.document.getElementById('iframe');
myIframe.onload = function () {
    myIframe.contentWindow.scrollTo(xcoord,ycoord);
};

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

InfSub

InfSub пишет

не пользуюсь, не в курсе, что там за код у страницы, скорее всего это какой-нибудь iframe
соответственно код должен быть приблизительно таким:

скрытый текст
ee3723cca38f.jpg

А если там нет Id и как в строку в iim вписать по имещимся данным?

Извини что достаю, катастрофически не хвататет времени даже 5и минут нет чтоб всопмнить как писать на js скрипт, хочу сделать что-то вроде Массфолловинг пока простенький без на iim без js если будет работать уже модернизирвать. Уперся именно в эту проблему с прокруткой

Приветствую.
Как при каждом новом цикле в массиве менять местами 2 тектовых параметра?

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

Выделить код

Код:

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

var вверхиливниз = ["Ниже","Выше"]
alert(вверхиливниз)

}

Рауф
что мешает записать js в одну строку? или мне за вас убрать перенос строк?

28-01-2019 01:53:38

Рауф пишет

Уперся именно в эту проблему с прокруткой

ну так запишите действия в режиме experimental event mode, криво - но работать скорее всего будет

28-01-2019 02:05:53
Алим
либо пользуйтесь "верблюжьей нотацией" либо разделяйте слова в наименовании переменной нижним подчеркиванием
про английские имена - я вообще молчу
с помощью var - переменные объявляются - до цикла, а не внутри

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

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

Выделить код

Код:

var a = ['Ниже','Выше'], i;
for(i = 0; i < 10; i++){
    if(i % 2){
        alert(a[1]+','+a[0]);
    }else{
        alert(a[0]+','+a[1]);
    };
};

InfSub Век живи - век учись, как говориться.
Буду теперь иметь ввиду.
var вверх_или_вниз
var ВверхИлиВниз
var up_or_down
var UpOrDown
Благодарю.

InfSub пишет

Рауф
что мешает записать js в одну строку? или мне за вас убрать перенос строк?

Нет к сожалению через эксперементал моде не работает, а можно в iim записать через EVAL в одну строку прокрутку вниз чтоб не создавать js файл?

Рауф
можно для этого использовать url goto=javascript......

Приветствую! Подскажите как можно указать путь к файлу, если имя не полное? Например: сам файл имеет такое название 238604-kaersente .json
Чтобы иметь к нему доступ, надо указать путь к нему и его полное имя. Но имеется только вторая часть имени файла, то есть kaersente
А как заменять число, тире - и пробел? То есть как можно указывать путь к файлу, имея лишь частичное совпадение в названии файла?

Тут вот у меня часть кода, которая нормально работает с полным названием файла (с числом, тире и пробелом в конце). А надо сделать так, чтоб без номера (который вставляется в переменную '+i+'), без тире и без пробела, а только с переменной '+login+' чтоб работал, а остальное игнорировал.

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

Выделить код

Код:

imJS.setCookie('C:\\Cookie\\'+i+'-'+login+' .json');


Просто заменять звёздочкой * не получается.

Denisovich
ни как

Denisovich
1. Получаем массив имён в каталоге

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

Выделить код

Код:

function OpenPath(localLink) {
    var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath(localLink);
    var entries = file.directoryEntries; var arrFileName = []; while(entries.hasMoreElements()) { var entry = entries.getNext(); entry.QueryInterface(Components.interfaces.nsIFile); arrFileName.push(entry.leafName); }
    return arrFileName;
}

//При вызове передаём локальную ссылку на каталог
window.console.log(OpenPath("C:\\Users"));


2. Фильтруем массив на наличие паттерна из переменной "login" любым из удобных способов

3. Берём полное имя из отфильтрованного результата и подставляем в конечную ссылку

P.S. Можно в первом же действии в функции дописать условие выбора в зависимости от имени файла и его расширения

if(entry.leafName.match(/*Паттерн*/)) return entry.leafName;

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

InfSub
Судя по тому, что у Denisovichа в спойлере, ему нужно просто перебрать json файлы c именем "kaersente". Что может быть проще, чем собрать их полные имена в массив функцией и перебрать их в своём сценарии?

Если имя "kaersente" уникальное и оно разное у каждого файла, то всё ещё проще. Достаточно составить регулярку учитывающую, и цифровую, и буквенную часть.

И никаких непредсказуемых результатов, если с головой подходить к решению вопроса. ;)

Squatter пишет

если с головой подходить к решению вопроса

good3.gif

InfSub пишет

Судя по тому, что у Denisovichа в спойлере, ему нужно просто перебрать json файлы c именем "kaersente".

Не, не так. Дело вот в чом: имеется папка в которой содержатся файлы с расширением json. Их довольно много (несколько тысяч). И они имеют имена такого вида: сначала число 3-6 значное, потом тире, потом ник (логин, имя), и перед точкой пробел. То есть такой вид:
23467-asfgtrg .json
456676-duujtht .json
439-ghytjk .json
30784-seolfg .json
Так вот, цель такая: переименовать все эти файлы таким образом, чтоб убрать число, тире и  пробел. Чтоб выглядели так:
asfgtrg.json
duujtht.json
ghytjk.json
seolfg.json

Вот собственно и всё, что требуется. :)

Denisovich
а при чем тут iMacros? или забивать микроскопом гвозди - это "дар" всех горе программистов?
что - cmd, TotalCommander или иные утилиты для переименования файлов по шаблону уже отменили?

InfSub
переименования по шаблону?... Хм... Тотал Коммандером только и пользуюсь, но все файлы по шаблону переимновать... не слыхал. Вот если каждый отдельный файл в ручную, то это можно было бы, если бы их было десяток, ну сотня, но не несколько же тысяч!

InfSub пишет

а при чем тут iMacros?

а при том, что это именно макросом я создавал все эти файлы с такими именами. А теперь вот надо переименовать. Так чем ещё переименовывать, если и создавалось именно этим самым?

PS кстати, а на счёт переименования всех файлов сразу, по шаблону в Тотал Командоре, это мысль! Спасибо за идею. Погуглю как это вообще такое возможно, потом тут отпишусь. :)
может оно и в самом деле проще будет, чем сидеть ломать голову над тем, как забить 1000 гвоздей одним  микроскопом ;)

Denisovich пишет

при том, что это именно макросом я создавал все эти файлы с такими именами. А теперь вот надо переименовать. Так чем ещё переименовывать, если и создавалось именно этим самым?

а вы когда вордом файлы создаете, вы тоже их из ворда переименовываете? crazy.gif

Denisovich пишет

Тотал Коммандером только и пользуюсь, но все файлы по шаблону переимновать... не слыхал

да... ну если использовать тотал только для перемещения по директориям... no comments...

Denisovich пишет

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

я сейчас рыдать буду... dash2.gif

Squatter
теперь понимаешь, почему ответ был - нет... какой тут подход с головой?! crazy.gif

04-02-2019 12:55:18

Denisovich пишет

Погуглю как это вообще такое возможно, потом тут отпишусь.

в TCMD хоткей Ctrl+M

скрытый текст
ef5998279aca.png

Выделить код

Код:

^[\d-]+(.*?)\s

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

скрин
7yDzNj

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

Сантехник
Если оно уже появилось то никак ибо его появление полностью останавливает выполнение js
Можно изначально его подменить:

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

Выделить код

Код:

alert(1)
window.alert = function(msg){return false}
alert(2)


если запрещать alert нужно не везде то можно сделать проверку:
скрытый текст

Выделить код

Код:

window.___alert = window.alert;
window.alert = function(msg){
  if( (msg+'').indexOf( 'Волшебное слово' ) < 0 ) ___alert(msg);
  return false
}
alert('Матерное слово')
alert('Волшебное слово')
alert('Литературное слово')

karginaolga
там вроде бы не alert() вызывается, хотя.. надо смотреть

InfSub
возможно. если это prompt достаточно alert на prompt заменить:

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

Выделить код

Код:

window.___alert = window.prompt;
window.prompt = function(msg){
  if( (msg+'').indexOf( 'Волшебное слово' ) < 0 ) ___alert(msg);
  return false
}
prompt('Матерное слово')
prompt('Волшебное слово')
prompt('Литературное слово')

help

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

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

bop101 пишет

желательно на .iim

а как вы себе представляете логику на iim скрипте?

bop101 пишет

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

простите, а для чего вопрос в спойлере? для таинственности?

есть кнопка:

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

Выделить код

Код:

<input class="btn btn-index form-submit ajax-processed" onclick="open_self()" id="edit-submit" name="op" value="Поиск" type="submit">


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

Выделить код

Код:

window.document.querySelector('input[id^="edit-submit"]').click();


реакции ноль
есть идеи как на нее нажать?

19-02-2019 06:30:54
нашел ответ в FAQ =)
https://forum.mozilla-russia.org/viewto … 30#p731830

Привет форумчане! Есть вопрос, творческий. Связан с батниками. Как можно создать что-то типа виртуального батника? Кратко по сути: скачиваю видео которое просто так не качается, оно кусками идёт (пакетами) с расширением .ts И чтобы его скачать есть программа, которая работает через командную строку. Для упрощания создал батник, чтоб каждый раз не вызывать командную строку и вписывать туда команду. Но! скачиваемое видео всегда сохраняется с одним и тем же названием. И пока название скачанного файла не поменять, программа не сможет скачивать другие видео, будет выдавать запрос типа файл с таким названием уже существует, удалить, да. нет... Так вот, надо сделать так, чтоб команда в батнике менялась, точнее менялось бы название скачиваемого файла на рандомное, желательно на текущее время (мин, сек).
Вот как выглядит содержимое батника:

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

Выделить код

Код:

CMD /K ffmpeg -i "https://iphone.c-spanvideo.org/m3u8/program.299365.MP4.M20.m3u8" -c copy video.ts


там в конце написано  video.ts Это и есть название которое присваивается сохраняемому видеофайлу. Так вот надо сделать так, чтоб это название всякий разменялось, то есть было уникальным. Тогда не будет перезаписываться новое сохраняемое видео вместо уже сохраненного с таким же именем. Подскажите пожалуйста, что можно придумать в этой ситуации? Может можно ещё проще сделать всё и не замарачиваться батниками, а прямо из js скрипта чтоб подавалась непосредственна нужная команда, в которой имя для файла всегда бы выдавалось новое уникальное?

Odessaman
откройте FAQ там есть информация о том как запустить внешнюю программу из js с параметрами.

InfSub
Вы меня не поняли. Я интересуюсь не о том, как запустить вшешнюю программу, я её и так уже давно запускаю скриптом js, через батник в данном случае. Вопрос был в другом: как можно сделать, чтоб в батнике менялись данные?

Odessaman

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

InfSub
верно, батник не нужен, чтоб напрямую запускать программу. Но всё же основной вопрос был как сделать, чтоб менялись данные? То есть чтоб имя сохраняемого файла было уникальным и желательно с привязкой ко времени, ну чтоб что-то типа такого: 21-02-2019-16-40-23.ts

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

21-02-2019 16:54:20

Odessaman пишет

желательно с привязкой ко времени, ну чтоб что-то типа такого: 21-02-2019-16-40-23.ts

RTFM по js функции Date()

Odessaman

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

Выделить код

Код:

var file = getFormattedDate(new Date())+'.ts';
alert(file);

function getFormattedDate(today) {
    var dd = today.getDate();
    var mm = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();
    var hour = today.getHours();
    var minu = today.getMinutes();

    if(dd<10) { dd='0'+dd; }
    if(mm<10) { mm='0'+mm; }
    if(minu<10){ minu='0'+minu; }

    return dd+'-'+mm+'-'+yyyy+'-'+hour+'-'+minu;
}

Odessaman пишет

вы не можете сгенерировать им нужную вам строку подставив нужные данные?

наверно могу, только пока не знаю как. Если вы подскажите (код или ссылку на наглядный пример скрипта, кода), то тогда точно смогу. А иначе, еслиб я всё сразу знал и мог, то тогда зачем бы мне вообще было обращаться за помощью на этот форум.

21-02-2019 17:01:11
karginaolga
спасибо большое!

Odessaman
по js куча информации, на том же javascript.ru
google.com тоже ни кто не отменял, банальный вопрос Гуглу js date выдаст сотни страниц информации и первые же 2-3 ссылки ответят на вопрос, вопрос желания найти ответ

Здравствуйте.
Подскажите, пожалуйста, как можно средствами js найти определёный текст или тег\элемент страницы  в переменной? Допустим, я получаю в переменную через extraсt текст со страницы сайта и в этой переменной мне нужно найти определённый текст.
Про поиск через SEARCH SOURCE=TXT:"тут искомый текст" знаю, этот метод тут не подходит.

udalov

поиск первого совпадения

Выделить код

Код:

var text="Подскажите, пожалуйста, как можно средствами js найти определённый текст или тег\\элемент страницы  в переменной";
alert(/определён(?:н)?ый [а-я]+/i.exec(text));


01-03-2019 19:34:17
вариант с перебором всех совпадений регулярному выражению

Выделить код

Код:

var res,
    regexp=/определён(?:н)?ый [а-я]+/gi,
    str="Подскажите, пожалуйста, как можно средствами js найти определёный текст или тег\\элемент страницы  в переменной? Допустим, я получаю в переменную через extraсt текст со страницы сайта и в этой переменной мне нужно найти определённый текст. ";
while(res=regexp.exec(str)){
    alert(res);
};

InfSub, спасибо, то, что нужно было!

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

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

Выделить код

Код:

EVENTS TYPE=KEYPRESS SELECTOR=


все профили открыты для написания сообщений в ЛС.
Из 10 циклов нормально сообщения отправились только 2 раза, 1 раз отправилось половина нужного текста, в остальных случаях ничего не отправилось, только подсвеченные кнопки, что оно нажималось.
В чём может быть проблема? Санкции со стороны соцсети не наблюдаются. Все неоходимые элементы страницы загружаются. Переделать скрипт на js? Файлы с данными сделать в  csv?
FF 46.0.1, iMacros 8.9.7.

udalov
не попадает в нужное поле или просто баг EVENT такое бывает на динамических страницах, используй js для вставки текста, в FAQ есть пара ссылок с примерами, как это делать

PRESIDENT Спасибо за помощь в теме про капчи!
Ещё один вопросик есть. Я тут голову ломаю как записать ваш код без алерта, так, чтоб сразу готовый результат получался.
Вот код скрипта:

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

Выделить код

Код:

var iP=iimPlayCode, iD=iimDisplay, f1='FRAME NAME=undefined\n', t0='SET !TIMEOUT_STEP 0\n', t1='SET !TIMEOUT_STEP 1\n';


   iP('ONDOWNLOAD FOLDER=C:\\CAPCHA FILE=captcha.jpg \n TAG POS=1 TYPE=IMG ATTR=SRC:data:image/png* CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT');
   iP('TAB OPEN\nTAB T=2'); 
   iP('URL GOTO=file:///C:/index.html'); 
   iP('TAG POS=1 TYPE=INPUT:FILE FORM=ACTION:http://127.0.0.1/in.php ATTR=NAME:file CONTENT=C:\\CAPCHA\\captcha.jpg'); 
   iP('TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:http://127.0.0.1/in.php ATTR=*'); 
   iP('WAIT SECONDS=0'); 
   iP('TAG POS=1 TYPE=* ATTR=TXT:* EXTRACT=TXT'); a=iimGetLastExtract().replace('OK|',''); 
   iP('URL GOTO=http://127.0.0.1/res.php?action=get&id='+a); 
   iP('WAIT SECONDS=0'); 
   iP('TAG POS=1 TYPE=* ATTR=TXT:* EXTRACT=TXT'); b=iimGetLastExtract().replace('OK|','');
   
otvet = "10*3=";
alert(eval(otvet.replace(/=/g,'').replace(/X/,'+').replace(/x/,'+').replace(/\*/,'+')));
   
   iP('TAB CLOSE'); 
   iP('TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:* ATTR=NAME:captcha_solution CONTENT='+otvet);


там в вашем коде (который из двух строчек с алертом) есть такое  "10*3=" это результат выдаваемый демо-версией проги. Понятно, что вместо этих чисел надо записать переменную, и в данном случае это b. Подскажите пожалуйста как надо правильно записать? А то уже несколько часов голову ломаю над казалось бы элементарным вопросом (для опытных программистов, конечно)) ). А то пробую и так и этак, разные варианты, да что-то не получается.

Как то так

Выделить код

Код:

iP('TAG POS=1 TYPE=* ATTR=TXT:* EXTRACT=TXT');  
   otvet = eval(iimGetLastExtract().replace('OK|','').replace(/=/g,'').replace(/X/,'+').replace(/x/,'+').replace(/\*/,'+'));

PRESIDENT Спасибо огромное!!! Теперь всё как надо. Премного благодарен!!! :)

0desamann

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

Выделить код

Код:

var text = "8+7"; 

if (/^[+-\\*\d]+$/.test(text)) {
    alert('eval возможен');
} else alert('нету арифметики');

Если есть несколько элементов с одинаковыми классами, как мне перемещаться от первого найденного к следующему с таким же классом?

in2fire
по номеру pos=1, pos=2 и т.д.

Здравствуйте.
Не могу понять как сделать.
Имеется документ "аккаунты.csv" с логинами и паролями

логин;пароль
логин;пароль
и т.д.

Нужно сохранить текст например на 2 строчке в документе аккаунты.csv в третьем столбике рядом с логин;пароль.
Но у меня сохраняет на самой последней строчке.

Чтобы было так
логин;пароль;текст
логин;пароль;текст

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

Выделить код

Код:

iimPlayCode('SET !ERRORIGNORE YES\n'+
'SET !DATASOURCE_DELIMITER ;\nCMDLINE !DATASOURCE аккаунты.csv\n'+
'SET !DATASOURCE_LINE 2\n'+
'SET !DATASOURCE_COLUMNS 3\n'+
'SET !EXTRACT "Не смог войти в аккаунт. Логин или пароль не верные."\n'+
'SAVEAS TYPE=EXTRACT FOLDER={{!FOLDER_DATASOURCE}} FILE=аккаунты.csv')

Алим
saveas умеет только дописывать файл, а не редактировать его
собственно редактировать его ни кто не умеет кроме excel полноценного текстового редактора - вы можете перезаписать файл полностью, с учетом изменений, средствами js но не imacros
функция работы с файлами где-то была на просторах форума, недавно, вроде бы, ее в очередной раз выкладывали в этой теме

18-03-2019 13:20:29
вариант 2 - писать в новый файл все три столбца, в итоге будет 2 файла
первый: с "логин;пароль"
второй: с "логин;пароль;ваши данные"

Алим пишет

Имеется документ "аккаунты.csv".

Нафиг тебе этот .csv?
Изучи .json , с ним гораздо проще и приятней работать.

dim222
json хорош для скрипта, но не позволяет строить таблицы или как-то представлять данные человеку в легко читабельной форме, если только нет инструмента парсящего json в excel
тут не совсем понятно зачем 3й столбец, если для скрипта - то соглашусь, json идеален, если для пользователя, как результат работы, то - нет

dim222
если чел только команды на iim пишет, о JS представления не имеет, то какой ему JSON :D

PRESIDENT
вывод в корне неверный, можно писать на имакросе часть команд, а остальное на js
в приведенном коде iimPlayCode() соответственно, код как минимум частично на js

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

InfSub пишет

тут не совсем понятно зачем 3й столбец

Алим
ну как вариант я вам уже сказал, писать аналогичный файл, но в него уже добавлять 3 столбец
текущий файл можно только перезаписать полностью, с помощью функции чтения/записи/дозаписи из js но не с помощью iMacros... в прочем извратиться можно и на iMacros в связке с js но зачем... как минимум дольше так как запись будет построчной

Чот у себя в закромах не могу найти плагин авторизации прокси.
У кого-нить есть "безглючное"  решение?
Может у кого есть решение доступа к foxy-proxy, а то я как-то пробывал, так и не решил этот вопрос

Пытаюсь копаться в Imacros.
Направьте, пожалуйста.

1) Скрипт случайно тыкается по сайтам, всё это зацикливается. В конце каждого проверяется время, если 10 часов, ждём до 11 и продолжаем, если другое - просто продолжаем.
Я так понимаю нужен JavaScript, срествами iMacros так не сделать.
JavaScript я не знаю, но покопавшись, можно найти примеры, можно на них и сделать.

Вижу так: основной цикл на  JavaScript, внутри  iMacros с обходом, возврат в  основнй цикл, проверка времени на js и ветвление от результата?
Я мыслю верно, по-другому не сделать?

2) Как вносить названия сайтов из csv в GOTO URL= ?
Если делать так: URL GOTO={{COL1}}, то как менять строку?
Так и не могу понять, COL - это строка или столбец? В разных местах натыкался на разную информацию. Но это ладно, можно будет потыкаться и узнать.
К примеру, URL GOTO={{!DATASOURCE_LINE}} не работает.

3) Не понятно, как работает !LOOP, да и вообще зацикливание кода, без доп js кусков. Запускаю циклом на 3 раза (да и не циклом) - делает только 1 проход.

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

Выделить код

Код:

SET !VAR2 1 
SET !VAR3 2 

SET !ERRORIGNORE YES
'Подключаем файл с нужными нам адресами 
SET !DATASOURCE 1.csv
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
URL GOTO={{COL1}}

SET !VAR1 EVAL("Math.floor(Math.random()*{{!VAR3}} + 1);") 
TAG POS={{!VAR1}} TYPE=A ATTR=TXT:* 
WAIT SECONDS={{!VAR2}} 
 
SET !VAR1 EVAL("Math.floor(Math.random()*{{!VAR3}} + 1);") 
TAG POS={{!VAR1}} TYPE=A ATTR=TXT:* 
WAIT SECONDS={{!VAR2}} 
URL GOTO=javascript:window.scrollBy(0,200)

 
SET !VAR1 EVAL("Math.floor(Math.random()*{{!VAR3}} + 1);") 
TAG POS={{!VAR1}} TYPE=A ATTR=TXT:* 
WAIT SECONDS={{!VAR2}}


При этом, пример с сайта iMacros проходит:
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Даже если сделать SET !LOOP -3 в простой запуск, будет тогда 4 прохода.
И поменять TAG POS={{!loop}} TYPE=A ATTR=HREF:http://*.jpg   на TAG POS=1 TYPE=A ATTR=HREF:http://*.jpg  (иначе я пока не понял, как прибавить для отрицательного !loop)

Вообще, !LOOP может быть только один за весь код, да?

4)Вот этот же кусок не обрабатывает сайты с новостями, те же lenta.ru, если перейти на любую новость, правую колонку (и не только её) он не видит, при этом, верхную часть (где записано "Все, Наука, Космос, ...) и кнопку "Обсудить" видит и нажимает.
То же с Яндекс. Новости, oszone.net и прочее.

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

Выделить код

Код:

SET !VAR1 EVAL("Math.floor(Math.random()*{{!VAR3}} + 1);") 
TAG POS={{!VAR1}} TYPE=A ATTR=TXT:* 
WAIT SECONDS={{!VAR2}}


Только если так:
скрытый текст

Выделить код

Код:

URL GOTO=https://lenta.ru/news/2019/03/20/crimea/
TAG POS=2 TYPE=A ATTR=HREF:*news*


Тогда работает только для правой колонки. Открывает, в данном случае вторую новость.
А как-то можно сделать, чтобы со всего сайта была выборка?

Тёрн пишет

Я мыслю верно, по-другому не сделать?

да

Тёрн пишет

Так и не могу понять, COL - это строка или столбец?

column - столбец

Тёрн пишет

Не понятно, как работает !LOOP

http://wiki.imacros.net/!LOOP
поиск по форуму - так же ни кто не отменял: !LOOP

Тёрн пишет

А как-то можно сделать, чтобы со всего сайта была выборка?

изучить код сайта, его особенности

InfSub пишет

поиск по форуму - так же ни кто не отменял: !LOOP

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


InfSub пишет

изучить код сайта, его особенности

Но случайная выборка со всего сайта, в принципе, возможна?

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

удалено, оффтопик п.п. 2.21
для этого есть тема "ищу расширение"

ссылки на сторонние ресурсы, не публикуются в открытом виде

замечание

InfSub

Подскажите!
Как сохранить текущую страницу в формате mht или подобному ему с помощью iMacros-a?

mmmaks2004

https://wiki.imacros.net/SAVEAS

Помогите добавить переменную в регулярку, так работает:

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

Выделить код

Код:

var str = "https://forum.mozilla-russia.org/viewtopic.php?";
var reg = "forum.mozilla-russia";
if (RegExp('http(?:s)?:\/\/' + reg + '.[a-z]+','i').exec(str)) alert('ok');


а в таком варианте как? :
скрытый текст

Выделить код

Код:

var str = "https://forum.mozilla-russia.org/viewtopic.php?";
var reg = "forum.mozilla-russia";
var regexp = /http(?:s)?:\/\/' + reg + '.[a-z]+/i;
if (regexp.exec(str)) alert('ok');

karginaolga

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

Выделить код

Код:

var str = "https://forum.mozilla-russia.org/viewtopic.php?";
var reg = "forum.mozilla-russia";
var regexp = 'http(?:s)?:\/\/' + reg + '.[a-z]+';
if (new RegExp(regexp,'i').exec(str)){alert('ok');}else{alert('-')};

Как извлечь значение из глобальных настроек мазилы по средством js?

Где значение там прописывается путь.
Мне надо извлечь этот путь, чтобы определить имя пользователя на компьютере.
Чтобы потом данное имя пользователя подставлять в своих путях. Но как извлечь значение не могу понять.

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

Выделить код

Код:

var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
iimPlayCode('URL GOTO=about:config')

prefs.setCharPref("extensions.imacros.defsavepath",значение)

C:\Users\Имя пользователя\Documents\iMacros\Macros


Нашёл уже

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

Выделить код

Код:

function show_obj(o){content.document.defaultView.wrappedJSObject.console.log(o)}
function get_panel(){return window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIWebNavigation).QueryInterface(Components.interfaces.nsIDocShellTreeItem).rootTreeItem.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindow);}

var r0=get_panel().iMacros.currentMacro;
alert(r0.name) // имя тек макроса/userJS
alert(r0.path) //полный путь до него

Всем доброго времени суток! Не знаю поднимался ли такой вопрос, по крайней мере в поиске найти схожую тему не получилось.
И так... есть список, состоящий из адресов сайтов. Задача стоит такая, открывается страница, находится кнопка "Активировать" прожимается, таймаут 30 сек. после чего дальше след. страница по списку.
Есть проблема, некоторые страницы уже имеют активированную кнопку (То бишь вместо Активировать - Деактивировать стоит) - когда макрос открывает эту страницу, он её не видит и пропускает, после чего опять в таймаут 30сек.
Собственно вопрос, как можно сделать так, чтобы когда макрос втыкал в то, что кнопки нет, он просто перепрыгивал на след. цикл и пропускал остаток кода (т.е. таймаут в 30сек)
Буду очень благодарен за помощь!

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

Выделить код

Код:

VERSION BUILD=8970419 RECORDER=FX
SET !ERRORIGNORE YES
SET !TIMEOUT_PAGE 20
SET !TIMEOUT_STEP 5
SET !DATASOURCE "list.txt"
SET !DATASOURCE_LINE {{!LOOP}}
SET !LOOP 1
TAB T=1

URL GOTO=https://www.site.ru/{{!COL1}}/
TAG POS=1 TYPE=BUTTON ATTR=TXT:Активировать

WAIT SECONDS=30

SH0N
здесь половина вопросов на аналогичные темы
js в помощь, с помощью него вы сможете определить произошла ли ошибка при доступе к кнопке (iMacros вернет ошибку при попытке нажать на кнопку, естественно при использовании js-скрипта не должно быть параметра SET !ERRORIGNORE YES)
собственно примеры на форуме стоит искать по словам цикл, условие и синонимы, вам нужны либо цикл for(), либо while() и условный оператор if()

Друзья, помогите, пожалуйста подсказкой, какому селектору направить KEYPRESS KEY=34 для скроллинга списка лайкнувших пост в инстаграмме.
для

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


не получается найти такое решение

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

замечание

InfSub

Можете помочь,что не так с этим кодом?

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

Выделить код

Код:

var  s= Math.floor(Math.random()*5);

if (s= 0) {
iimPlayCode(`
URL GOTO=https://www.youtube.com
`)
}


else if (s=2 ) {
iimPlayCode(`
URL GOTO=https://ok.ru
`)
}


else if (s=3 ) {
iimPlayCode(`
URL GOTO=https://www.facebook.com
`)
}


else if (s=1 ) {
iimPlayCode(`
URL GOTO=file:///C:/Users/11https:
`)
}


else {
iimPlayCode(`
URL GOTO=https://www.instagram.com
`)
}


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

InfSub

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

Зачем_нужен_ник? пишет

else if (s=2 )

Вы присваиваете переменной s значение 2, таким образом вы отменяете
значение переменной var  s= Math.floor(Math.random()*5);
если хотите проверять по условию, то пишите тогда else if (s==2) или так else if (s===2)
почитайте букварь по JS, там все написано

Всем привет:rock:
Скрипт экстрактит этот весь код

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

Выделить код

Код:

<div style="outline: 1px solid blue;" class="f bl bm" id="mbasic_inline_feed_composer"><form method="post" action="/composer/mbasic/?av=100003629234513&amp;eav=AfYlgC2O8XJXUd6o7SRYVa32jaLZeaWxXgajClPR2pUM19ZlKqMzXUUHaaxLP-Q7Z1Q&amp;refid=8" class="bn" id="mbasic-composer-form">


Как мне вытащить только этот номер? 100003629234513

Тема закрыта,решил вопрос.

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

InfSub

Этот код считает сколько строк в txt файле,как сделать что бы он не считал пробелы?
К примеру в файле 10 строчек,и вконце ещё 5 пустых строк,надо их проигнорировать,надо считать только заполненые строки

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

Выделить код

Код:

iimPlayCode('URL GOTO=file:///C:\\User.txt\nTAG POS=1 TYPE=* ATTR=TXT:* EXTRACT=TXT');
is=iimGetLastExtract().split('\n').length;
alert(is)

Gergi

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

Выделить код

Код:

is=iimGetLastExtract().trim().split('\n').length;

InfSubБлагодарю:rock:
Если не затруднит подскажите почему если в Txt файле слова без пробелов то скрипт работает,а если есть пробелы выдаёт ошибку

Gergi
Экстрасенсы в отпуске, приведите код ошибки

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

Выделить код

Код:

iimPlayCode('SET !DATASOURCE C:\\Txt.txt\nSET !DATASOURCE_LINE 1\nSET !EXTRACT {{!COL1}}'); 
t1=iimGetExtract();


Вот код,если в файле нет пробелов работает

Gergi
Do you speak russian?
Что не понятного в фразе "код ошибки"? или текст ошибки?

Gergi
ок, включу режим Ванги, extract не умеет пробелы, если они не в кавычках в коде

Здравствуйте Господа! Скажите, есть ли возможность с помощью js-script менять отпечаток браузера? А то что-то в FAQ по по iMacros for Firefox ничего по теме не нашёл.
Вот есть расширение для Мозилы Canvas Defender, создаёт уникальный и постоянный шум, который скрывает реальный canvas fingerprint. Скажите, есть ли возможность делать то же самое через imacros? То есть примерно то же что и смена юзер-агента, только в данном случае чтоб происходила смена отпечатка браузера (canvas fingerprint).

saurbeck
думаю стоит спросить в соседних ветках, где именно хранится данный отпечаток, если где-то в настройках, думаю не проблема его менять по аналогии с user-agent

saurbeck, там не всё так просто, слепок осуществляется на уровне клиентского кода. C помощью методов canvas API делается скриншот любого блока с контентом или всей страницы целиком.
Изображение получается в формате dataURL в кодировке Base64, а уже с получившегося dataURL делается hash слепок с помощью обычного MD5 алгоритма – это и есть отпечаток, который POST запросом идёт в базу или логи на сервер.

Раньше был ажиотаж вокруг canvas API, теперь этих API с помощью которых можно сделать подобного рода отпечаток уже много.
Захват части экрана и рабочего стола можно делать и через WebRTC.

Посмотрите в аддоное CanvasBlocker перечислены основные API, с помощью которых могут собираться следы вашего сёрфинга.
WebRTC и некоторые другие вредные API можно отключить в лоб через about:config.

Однако банальное их отключение может помешать корректной работе нужных функций сайтов.
Поэтому оптимальным является создание рандомного шума который заточен под конкретное API.

Средствами JS и макроса решать такую большую и комплексную проблему громоздко, нецелесообразно и глупо. Лучше смотреть в сторону готовых аддонов или писать собственный. ;)

Squatter
спасибо за развернутый ответ, краем уха, слышал что-то про эти канвасы, но не знал, что все столь серьезно

Squatter
Спасибо! А подскажите ещё как грамотно записать юзер-агенты в скрипте, чтоб не в одну строчку всё впихать, а в несколько. А то юзер-агентов может быть множество (более 100) и всё лепить в одну строку не годится. Вот пример скрипта для смены юзер-агента, в котором сами юзер-агенты записаны в одну строчку:

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

Выделить код

Код:

//====================================================================== /***-=Смена UserAgent=-***/
function randomInteger(min, max) {
      
var rand = min - 1 + Math.random() * (max - min + 5)
rand = Math.round(rand);
return rand;        
}
var frt=( randomInteger(2, 10) );
var urlAgent=['Mozilla/5.0 (Windows NT 5.1; rv:35.0) Gecko/20100101 Firefox/35.0','Mozilla/5.0 (X11; U; Linux; i686; en-US; rv:1.6) Gecko Debian/1.6-7','Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0 SeaMonkey/2.14.1',' Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)','Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; LG-P505R Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1','Mozilla/5.0 (Linux; U; Android 2.2.1; en-gb; HTC_DesireZ_A7272 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1','Mozilla/5.0 (X11; U; Linux armv61; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1','Mozilla/5.0 (Linux; U; Android 2.3.3; de-ch; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1','Mozilla/5.0 (Linux; U; Android 2.3.3; ko-kr; LG-LU3000 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1','Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; T-Mobile myTouch 3G Slide Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1','Mozilla/5.0 (Windows NT 6.1; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1','Mozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1b1pre) Gecko/20081005220218 Gecko/2008052201 Fennec/0.9pre','Mozilla/5.0 (Windows; U; Windows CE 5.2; en-US; rv:1.9.2a1pre) Gecko/20090210 Fennec/0.11','Mozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1a1pre) Gecko/2008071707 Fennec/0.5','Mozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1a2pre) Gecko/20080820121708 Fennec/0.7','Mozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1b1pre) Gecko/20080923171103 Fennec/0.8','Mozilla/5.0 (X11; U; Linux armv6l; en-US; rv:1.9.1b1pre) Gecko/20081005220218 Gecko/2008052201 Fennec/0.9pre','Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US;  rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1','Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1 '];

function UserAgent(){iimPlay("CODE:URL GOTO=about:config\n WAIT SECONDS=1");        
       var Cc=Components.classes, Ci=Components.interfaces; 
       var prf=Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefBranch);
       var str=Cc['@mozilla.org/supports-string;1'].createInstance(Ci.nsISupportsString);     
       str.data=urlAgent[frt]; // Перюключение UserAgent     
       prf.setComplexValue('general.useragent.override',Ci.nsISupportsString,str);
}
UserAgent(); 
//===================================================================


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

saurbeck
они записаны не в одну строку а в массив, читайте что такое массивы, как с ними работать и вообще про синтаксис языка JS, чтобы не задавать вопросы типа a+b

InfSub пишет

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

Верно, в массив. А массив в одну строку записан.

скрытый текст
2UiVW.png
это то, что мне и надо было. спасибо за подсказку ;)

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

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

Выделить код

Код:

function randomInteger(min, max) {
      
var rand = min - 1 + Math.random() * (max - min + 5)
rand = Math.round(rand);
return rand;        
}
var frt=( randomInteger(2, 10) );


писал не я, нашёл в интернете. Насколько этот вариант будет показывать одинаковую вероятность для всех данных массива - неизвестно.
В интернете нашёл статью где показаны три варианта: неправильный (но тоже рабочий), правильный и альтернативный (с floor).
скрытый текст
2UiXo.png

Так если выбрать этот вариант с floor и диапазон указать от 0 до 49, так верно будет? То есть всего юзер-агентов в массиве содержится 50. И поскольку в массиве отсчет начинается с нуля, то и указывать начало диапазона надо ноль, и в конце 49. Таким образом будут рандомно перебираться все юрег-агенты в количестве 50 штук. То есть вот так:
скрытый текст

Выделить код

Код:

function randomInteger(min, max) {
    var rand = min + Math.random() * (max + 1 - min);
    rand = Math.floor(rand);
    return rand;
}
var frt=( randomInteger(0, 49) );


Правильно или нет? Если что, поправьте пожалуйста.

saurbeck
а посчитать количество элементов в массиве, самим js, чтобы не править код? или это не ваш метод, ручками надёжнее?
вам уже написали все в статье про корректность того или иного кода, какой ответ вы хотите?
да, в массиве первая ячейка - 0

InfSub пишет

какой ответ вы хотите?

правильно ли будет записать так: var frt=( randomInteger(0, 49) ); чтоб задействовался весь диапазон от 1 до 50 из всего списка юзер-агентов коих всего 50 штук в массиве?

30-05-2019 16:11:54

InfSub пишет

а посчитать количество элементов в массиве, самим js, чтобы не править код? или это не ваш метод, ручками надёжнее?

а как посчитать самим js? это надо ещё какой-то дополнительный код добавить? или как посчитать? Подскажите пожалуйста. Мне не то чтобы ручками надёжнее или не надёжнее, просто я пока ещё не в курсе дела как это можно чтоб не править код посчитать самим js.

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

saurbeck пишет

правильно ли будет записать так

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

У меня версия аймакроса 8.9.7 и браузера 56.0.2 лиса и на многих других версиях такая же проблема. Посмотрите видео!

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


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

InfSub

Азат55555 пишет

версия аймакроса 8.9.7 и браузера 56.0.2

8.9.7 не имеет полноценной совместимости с последними версиями FF, используйте более старую версию FF

Всем привет, давно не было меня ,
Интересуют  современные связки Imacros и браузеров, а так же работоспособность старых плагинов. До этого Pale Moon 25 и imacros 8.6.0 - связка моральна устаревает (3 года всетаки)

пользовался imacros для переноса картинок и монетизации - но некоторые сайты перестали отображать прогресс выполнения и вывода нужной мне информации - с чем связанно не знаю, но если ручками вбивать инфу, аяксом выдаются результаты на сайте (иногда от прокси иногда от сервера закономерности не отловить), если через imacros и много подгружать файлов на файлообменник  - сайты стопорятся (с imacrosom все впорядке) - как отловить не знаю.
Сегодня проверил новые версии портативной лисы и меня повергло в шок - 3 года юзал старые рабочие плагины. 
Короче нужны были плагины блокировщики , прокси, загрузчики и тд - Ничего этого у новой лисы нормального нет и imacros открывается в новом окне да и ещё с бешеными ограничениями.

остановился на WaterfoxPortable_56.2.11_English.paf и imacros 8.9.7
Связка кушает старые макросы и поддерживает дополнения частично, не засирает мозги сертификатами - держит дополнения от других версий мазил.
Замечено подвивсние, но робота ведется под контролем и для меня не критично. Файлообменники пока корректно отдают инфу.

Интересуют связки пользователей "полный imacros" + "всеядный браузер" + "старые плагины". Проблема новых версий для меня, это отказ от любимых старых плагинов к которым привык и которые на 100% делают свою работу
custom buttons 0,0,5,7
Image Picker 1,9,2,1
RequestPolicy 0,5,28,1
random Agent Spoofer 0.9.3.1
Close Proxy Authentication 1.1
ну и удаленна полоса состояния в нижней части, аналогов которой мне не удалось найти

kolshix
Использую FF 55.0.3
imacros 8.9.7
Все работает, все устраивает.
>> Здесь <<  расширения.

У меня с флеш плейером проблемы на некоторых сайтах не выводится контент и пишет, обновите. Но какие бы обновления я не ставил не работает  флеш. FireFox 38.0.1/iMacros 8.9.2.1 что делать?

Всем привет, подскажите, а как "уловить" нажатие на кнопку (сердечко, нравится) на этой странице

записываю макрос, показывает:
TAG POS=2 TYPE=BUTTON ATTR=TXT:

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

ondo
смотрите код, привяжите к классу или id или к любому другому элементу идентифицирующему данную кнопку

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

"16000"
"16500"
"35000"

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

Алим
загрузите в массив и отсортируйте

Алим

js

Выделить код

Код:

function min ( array ) {
            
             return Math.min.apply( Math, array );
             
        }

Разобрался, спасибо

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

Выделить код

Код:

alert(Math.min.apply(null, [40, 20, 42, 10, 100, 67]))

InfSub да, затем я так и сделал. Удобней и быстрее.

В массиве имею 1 элемент такого вида "30000,8889,10700,30000руб"
Мне нужно разбить их, то есть каждое число после запятой сделать отдельными элементами в массиве и без "руб".

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


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

Выделить код

Код:

var XMLHttpRequest=Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
var b=XMLHttpRequest();b.open('GET',ссылка,false);b.send('');
var txt = b.responseText;
var результат = txt.replace(/&\#160;|<td>| |,00|<span class="caption-subject bold">/g,'').match(/.*руб/g)

var массив = []
массив.push(результат)

alert(массив.join('\n').split('руб,'))

var массив = массив.split(',')

alert(массив[1])

попробуй так
...........match(/.*руб/g)
...........match(/\d+/g)


offtop
Звиняюсь что не в тему,
но может кто юзает и подскажет аддончик для авторизации проксей
нужен для 49 и/или 55 ФФ

отредактировано InfSub

Алим
после match вы не сможете использовать ни replace ни split
и вам об этом ни раз писали.

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

Выделить код

Код:

var результат = результат.toString();


и дальше можете работать с ним

PRESIDENT

скрытый текст
Попробуй "Proxy Authentication".
>> Здесь <<  расширения.

InfSub

karginaolga благодарю, теперь буду знать.
Я думал, что надо в строку перевести. но делал не правильно .str добавлял в конце.
Забыл про .toString().

Ещё возник вопрос. В документе имеется одна строчка с переносом строки \n, пробывал и \\n и <br>
Но не делает перенос строки при вставке, а вставляет вместе со знаком переноса.

Как сделать, чтобы вставлял с переносом строки?
Может прежде, чем вставлять .textContent=txt, нужно преобразовать iimGetExtract().метод ?

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

Выделить код

Код:

iimPlayCode('SET !ERRORIGNORE YES\n'+
'SET !DATASOURCE_DELIMITER #\n'+
'SET !DATASOURCE doc.txt\n'+
'SET !DATASOURCE_LINE 1\n'+
'SET !EXTRACT {{!COL1}}')
var txt = iimGetExtract()

content.document.getElementsByClassName('posting_itx')[0].textContent=txt

Алим
с переносом строки или с символами "\n" внутри текста? это как бы не одно и то же.
Перенос строки не будет считан тем методом, который вы используете, так как чтение идёт построчно
Вставляйте уникальный тег, например тот же <br> и заменяйте его replace'ом в переменной на \r\n или на \n перед вставкой в форму

InfSub
replace(/<br>/,"\n") помогло.

Когда ссылка на сайт набирается по методу iim-event , появляется картинка от сайта, а когда идёт вставка методом js-dom, то не появляется. Можно ли решить это по средством js-dom или js ?

js-dom
27261822_m.jpg

iim-event
27261823_m.jpg

Алим
а что собственно решить?
чтобы появлялась или чтобы не появлялась?
разве ваш ответ не содержит ответ на этот вопрос?

19-07-2019 17:48:35
event по сути работает по с помощью того же dom
проанализируйте его код и перепешите в js

Подскажите как лучше всего закрывать Мазилу js-скриптом? Есть минимум 2 способа: через создание батника и команду

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

Выделить код

Код:

taskkill /F /IM FirefoxPortable.exe


и другой способ это настроить в Мазиле закрытие браузера при закрытии последней вкладки. Так при помощи команды ТАВ CLOSE браузер будет закрыт.
И вот тут возникает главный вопрос: какой способ лучше и почему? Интересуюсь не просто так, а потому что пользуясь способом taskkill, когда потом запускается браузер, то каждый раз появляется запрос типа закрыть или восстановить вкладки (окна). По всей видимости браузер запоминает что были окна (или окно) открыты и потом при запуске/перезапуске выдаёт запрос. Это как-то не очень хорошо.
Так в общем и не понятно, какой способ закрытия браузера лучше? И почему?

Держите памятку

Работа с вкладками

Выделить код

Код:

var browserWin = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                       .getInterface(Components.interfaces.nsIWebNavigation)
                       .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                       .rootTreeItem
                       .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                       .getInterface(Components.interfaces.nsIDOMWindow);
 
//Закрыть активную вкладку
browserWin.getBrowser().removeCurrentTab();

//Закрыть активную вкладку
this.window.close();

//Закрыть все вкладки слева, кроме закреплённых вкладок
browserWin.gBrowser.visibleTabs.forEach((tab)=> !tab.pinned && tab._tPos < browserWin.gBrowser.mCurrentTab._tPos && browserWin.gBrowser.removeTab(tab));

//Закрыть все вкладки, кроме закреплённых вкладок
[...browserWin.gBrowser.tabs].forEach((tab)=> !tab.pinned && browserWin.gBrowser.removeTab(tab));

//Закрыть все вкладки справа с подтверждением
browserWin.gBrowser.removeTabsToTheEndFrom(browserWin.gBrowser.mCurrentTab);

//Закрепить вкладку
browserWin.gBrowser.pinTab(browserWin.gBrowser.mCurrentTab);

//Закрепить вкладку, если откреплена и открепить вкладку если закреплена
var currTab = browserWin.gBrowser.mCurrentTab;
currTab.pinned ? browserWin.gBrowser.unpinTab(currTab) : browserWin.gBrowser.pinTab(currTab);


Если открыто несколько вкладок или одна, то универсальнее будет

Закрыть все вкладки

Выделить код

Код:

var browserWin = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                       .getInterface(Components.interfaces.nsIWebNavigation)
                       .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                       .rootTreeItem
                       .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                       .getInterface(Components.interfaces.nsIDOMWindow);

//Закрыть все вкладки
[...browserWin.gBrowser.tabs].forEach((tab)=> browserWin.gBrowser.removeTab(tab));


Некоторые старые твики для вкладок

about:config
browser.tabs.animate (Логическое) - отвечает за анимацию панели вкладок (открытие\закрытие вкладок). Значения:
TRUE - анимация включена
FALSE - анимация выключена

browser.tabs.warnOnClose (Логическое) - определяет: показывать или нет предупреждение о закрытии нескольких вкладок.
TRUE - показывать
FALSE - не показывать

browser.taskbar.previews.enable (Логическое) - Определяет: показывать ли вкладке в "супербаре" windows 7.
TRUE - показывать
FALSE - не показывать

browser.tabs.tabMaxWidth (Целое) - Максимальная ширина вкладок (в пикселях).

browser.tabs.tabMinWidth (Целое) - Минимальная граница ширины вкладок (в пикселях), после которой появляется кнопка прокрутки вкладок.

browser.tabs.tabClipWidth (Целое) - Ширина вкладки (в пикселях), начиная с которой пропадает крестик.

browser.tabs.closeButtons (Целое) - Наличие кнопки "закрыть" на вкладках. Значения:
0 - показывать кнопку закрытия только на активной вкладке
1 - показывать кнопки закрытия на всех вкладках
2 - вообще не показывать кнопки закрытия
3 - показывать единственную кнопку закрытия в конце панели вкладок (так было в Firefox 1.x)

browser.tabs.closeWindowWithLastTab (Логическое) - Определяет: закрывать ли браузер при закрытии последней вкладки. Значения:
TRUE – закрывать окно при закрытии последней вкладки.
FALSE - Окно закрываться не будет.


С taskkill видимо некорректное закрытие, поэтому браузер предлагает восстановить параметры последнего сеанса – всё что было открыто. Стандартная вещь.

Спасибо за памятку по вкладкам! Полезная вещь!

Squatter пишет

С taskkill видимо некорректное закрытие, поэтому браузер предлагает восстановить параметры последнего сеанса – всё что было открыто. Стандартная вещь.

А из-за чего некорректное закрытие? У меня ведь так: js-скрипт отработал, запустил батник и остановился. При этом батник запустился, но браузер ещё 10 секунд просто отдыхает. И только после 10 секунд батник даёт команду taskkill которая закрывает браузер.  Однако каждый раз как только по новой запускаю браузер (хоть вручную, хоть скриптом) всегда этот запрос на восстановление вкладок.
Прям ерунда какая-то. На Икспишке (5 лет назад) такого не было. А на 10-ке есть. Хотя с операционкой это наверно вообще никак не связано. Но тем не менее, запрос на восстановление вкладки есть и не понятно почему и как от этого избавиться?

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

Вы понимаете, что taskkill вы в лоб завершаете процесс, а не корректно закрываете браузер? Попробуйте вручную завершить процесс "firefox.exe" в диспетчере задач, и вы получите тот же результат.

saurbeck пишет

как от этого избавиться?

закрыть браузер

Выделить код

Код:

Components.utils.import("resource://gre/modules/Services.jsm");

    Services.startup.quit(Services.startup.eForceQuit);


перезапуск браузера

Выделить код

Код:

Components.utils.import("resource://gre/modules/Services.jsm");

    Services.startup.quit(Services.startup.eAttemptQuit | Services.startup.eRestart);


При перезапуске - батник не нужен, просто установи запуск своего кода на домашней странице.
user.js

Выделить код

Код:

user_pref("browser.startup.homepage", "imacros://run/?m=start.js");

dim222 пишет

При перезапуске - батник не нужен, просто установи запуск своего кода на домашней странице.

Вообще-то батник нужен. потому что кроме браузера там ещё и другую прогу перезапускать периодически надо. Да и сам браузер должен перезапускаться не сразу, а через определенное время (несколько минут после закрытия). Поэтому как тут без батника обойтись? Наверно никак

saurbeck, что мешает перезапускать другую программу батником, а браузер закрывать через таймаут одним из вышеописанных способов?

Squatter пишет

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

пожалуй так и сделаю: сначала закрою все вкладки кроме активной, а потом применю простую команду TAB CLOSE (предварительно в настройках браузера установив галочку "закрывать браузер при закрытии последней вкладки") :)

saurbeck, касательно батника, нужно корректно отправить WM_CLOSE. Сигнализировать завершение в приложение. В батник

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

Выделить код

Код:

taskkill /im firefox.exe


Так должно корректно закрываться.

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

Squatter пишет

saurbeck, касательно батника, нужно корректно отправить WM_CLOSE. Сигнализировать завершение в приложение. В батник

Выделить код

Код:

taskkill /im firefox.exe


Так должно корректно закрываться.

Вообще-то я так закрываю

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

Выделить код

Код:

taskkill /F /IM FirefoxPortable.exe


способом давно предложенным ПРЕЗИДЕНТОМ (способ этот есть и в ФАКе)
https://forum.mozilla-russia.org/viewto … 35#p695435
и
https://forum.mozilla-russia.org/viewto … 74#p695674

Без F параметра

Squatter пишет

Без F параметра

Ааа, так вот в чём загвоздка была. Попробую без F. Кстати, а что это за F, для чего?

23-07-2019 09:58:30
уже нашёл:
/F - Принудительное завершение процесса.

Батником так корректнее будет

Выделить код

Код:

SET processName="Firefox.exe"
SET pathToFirefox=D:\FAERFOX
taskkill.exe /F /IM %processName%
timeout /T 2 /NOBREAK
erase /F /Q %pathToFirefox%\Data\profile\*.sqlite
erase /F /Q %pathToFirefox%\Data\profile\*.sqlite-shm
erase /F /Q %pathToFirefox%\Data\profile\*.sqlite-wal
erase /F /Q %pathToFirefox%\Data\profile\sessionstore.js
erase /F /Q /S %pathToFirefox%\Data\profile\cache2
erase /F /Q /S %pathToFirefox%\Data\profile\OfflineCache
erase /F /Q /S %pathToFirefox%\Data\profile\safebrowsig
erase /F /Q /S %pathToFirefox%\Data\profile\startupCache
erase /F /Q /S %pathToFirefox%\Data\profile\thumbnails
exit

PRESIDENT ИМХО, это уже избыточно.

Вполне достаточно

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

Выделить код

Код:

taskkill /im firefox.exe


и в настройках приватности about:preferences#privacy просто включить "Удалять историю при закрытии Firefox" предварительно указав что нужно чистить.
И опять же, зачем насильно, криво убивать процесс, чтобы потом принудительно чистить все "хвосты", когда без флага /F работа firefox корректно завершается, как при обычном нажатии на [x]?
В чём подвох? ;)

Добрый день.

Помогите с каким-нибудь актуальным туториалом.

Хочу выполнить js скрипт.
Нашёл такой способ, но он, кажется, давно устарел :(

test.js:

Выделить код

Код:

alert(1);


test.iim

Выделить код

Код:

URL GOTO=imacros://run/?m=test.js


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

Ну и оно не работает.

Как на данный момент можно выполнить js с помощью imacros?

InfSub

zoodov
использовать версию imacros 8.9.7

25-07-2019 13:00:19

Squatter пишет

PRESIDENT ИМХО, это уже избыточно.

иногда бывает, что ff закрытый по [х] или через taskkill без force продолжает висеть в процессах, так что способ предложенный PRESIDENT имеет право на жизнь

Всем доброго времени суток. Помогите решить проблему. У меня стоит ff 56 и imacros 8.9.7, все работает как часы, но при включении многопроцессности у меня перестают работать макросы, добавленные в панель закладок. Ссылка в закладке как положено "imacros://run/?m=Current.iim", но при многопроцессности не работает. Есть идеи как бороться с этим?

flyte
А убрать многопроцессорность не пробовали?

flyte
8.9.7 не поддерживает многопроцессорность
ее поддерживает только 9.0.3 и более поздним версии, но в них сломали то, что было в 8.9.7

dim222 пишет

А убрать многопроцессорность не пробовали?

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

InfSub пишет

ее поддерживает только 9.0.3 и более поздним версии, но в них сломали то, что было в 8.9.7

все мои скрипты на чистом js перестали работать
в общем я понял, что буду сидеть и дальше на 8.9.7 в один процесс, спасибо!)

Как подключить JSON к imacros ?
Кто знает работающий метод?

Алим
наверное также как подключить умывальник к асфальту....
json - формат данных, как его можно куда-то подключить? с ним можно работать и в нем хранить и передавать данные....
JavaScript для этого, предоставляет методы:
JSON.stringify для преобразования объектов в JSON.
JSON.parse для преобразования JSON обратно в объект.

InfSub
Я смотрел про это инфу на этом сайте

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


Для чего, тогда они так делают?

Я думал только после подключения можно с jquery работать.
Спасибо за разъяснение.

Выделить код

Код:

http://sistem.in.ua/подключение-jquery-к-imacros/

Алим
по моему в своем вопросе вы перепутали теплое с мягким
что такое JSON - я написал выше, jQuery же, это библиотека или фреймворк, написанная на js и ее как-раз подключают
как подключить, не подскажу, это нужно только если у вас реально глобальный проект, в остальном достаточно обычного js

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

Алим
Вы сперва определитесь что вам надо.
jquery или JSON

Значит мне нужен jquery.

InfSub пишет

если верить автору статьи по вашей ссылке, то достаточно просто поместить код в скрипт и далее использовать функционал jQuery в скрипте

Да, я так и сделал.

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

Выделить код

Код:

function loadScriptFromURL(url) {
var request = Components.classes['@mozilla.org/xmlextras/xmlhttprequest;1'].createInstance(Components.interfaces.nsIXMLHttpRequest),
async = false;
request.open('GET', url, async);
request.send();
if (request.status !== 200) {
var message = 'ошибка при загрузке скрипта по урл: ' + url + ', status: ' + request.status;
iimDisplay(message);
return false;
}
eval(request.response);
return true;
}

loadScriptFromURL('http://imacros-script.ru/jquery/jquery-2.1.4.min.js');

$ = window.$,
JQuery = window.JQuery;

Как при таком случае, сделать перенос строки?

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

Выделить код

Код:

var txt = "текст\nтекст"

content.document.getElementsByClassName('cke_contents_true cke_show_borders')[0].textContent=txt.split('\n')


вот так сработало

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

Выделить код

Код:

var txt = "текст<br>текст"

content.document.getElementsByClassName('cke_contents_true cke_show_borders')[0].innerHTML=txt

В почте яндекса при вставки эмайл адреса в поле кому, через dom, вставляется но не отправляется из-за того, что не фиксируется в поле. Когда мышкой нажимаешь в поле - тема, то эмайл фиксируется в поле с выделением эмайд адреса.

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

Выделить код

Код:

content.document.getElementsByClassName('js-compose-field mail-Bubbles')[0].innerHTML='ivan@mail.ru'
content.document.getElementsByClassName('js-compose-field mail-Bubbles')[0].click()


Как это можно решить?

Алим
Пользуйтесь лёгкой версией яндекса

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


Код отправки
скрытый текст

Выделить код

Код:

var input_nodes = window.document.querySelectorAll('.b-form-input__input');
input_nodes[0].value = "ivan@mail.ru";
input_nodes[3].value = "Test headline";

var input_txarea = window.document.querySelector('textarea#compose-send');
input_txarea.value = "Test message";

// Отправить
window.document.querySelector('.b-compose__send').click();

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

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

Выделить код

Код:

iimPlayCode("TAG POS=1 TYPE=BUTTON ATTR=TXT:Заблокировать")


Хотя в iim все ок
скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=BUTTON ATTR=TXT:Заблокировать


Причем Notepad видит все как должно быть, на русском, а открыв код в редакторе мозилы увидел что весь русских текст прописан кракозябрами.
Нечего не переустанавливал, работал как и раньше.
Теперь переписывать все JS скрипты, или есть какое-то решение?
Кто знает, подскажите пожалуйста, в чем может быть проблема?
Мозила 47.0.1
Notepad++ 7.5.1 Final + Portable

s.stake
кодировка скриптов должна быть utf8

InfSub пишет

s.stake
кодировка скриптов должна быть utf8

Нечего не переустанавливал, нечего не менял. Ранее рабочие скрипты перестали работать. Кодировка не менялась.
Как видит Notepad:

скрытый текст
4704b2e15ae1.png

и как видит мозила:
скрытый текст
599d95d7d157.png

s.stake
некоторые версии notepad++ имели проблемы с корректным определением кодировок, попробуйте принудительно выставить utf-8
откройте другим редактором, проверьте

s.stake
если Notepad версии 7.7 или выше кодировка должна быть utf-8-bom
откуда вы такие беретесь, неужели трудно самому мышкой по нажимать и проверить

InfSub пишет

s.stake
некоторые версии notepad++ имели проблемы с корректным определением кодировок, попробуйте принудительно выставить utf-8
откройте другим редактором, проверьте

Да пробывал, и принудительно и по разному, и notepad другие версии устанавливал. Нечего не помогло. Решение - в другой редактор перешел, пока все работает. Просто хотелось понять, что могло вызвать такой внезапный глюк notepad++.


karginaolga пишет

s.stake
если Notepad версии 7.7 или выше кодировка должна быть utf-8-bom
откуда вы такие беретесь, неужели трудно самому мышкой по нажимать и проверить

Прежде чем сюда писать, я не только мышкой понажимал.
Читай лучше вопрос, прежде чем писать. У меня notepad версии 7.5.1 Final + Portable, с рабочей кодировкой utf-8, на которой он и всегда работал. А вчера перестал.
И откуда вы "умники" такие беретесь. Хоть бы что дельно/умное написала, а не в пустую воздух сотрясала.

Всем привет!
Какая сейчас актуальная версия имакрос+мазила ?

Доброго времени суток! Ребят, подскажите плиз как пользоваться чистым js в 10м imacros? выдает ошибку SyntaxError: can not parse macro line 1

flyte
ни как, научитесь читать change log

The built-in Javascript scripting interface for playing .js files is no longer available. Please use the scripting interface available with the Enterprise Edition instead, which allows you to control Firefox as well as other supported browsers from external scripts and programs (Javascript, Python, Perl, C++, C#, etc)

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

спасибо

InfSub

Здравствуйте! Подскажите как записать текст в массиве таким образом, чтоб каждое слово вставлялось с новой строки?

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

Выделить код

Код:

var text = ['Данное сообщение пишем с новой строки']

 iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=ACTION:* ATTR=CLASS:message* CONTENT="'+ text +'"');


То есть имеем форму ввода текста. Надо этот текст записать в форму ввода так, чтоб каждое слово было с новой строки. Как записать? А то всё в одно предложение, в одну строку записывается. То есть чтоб вот такого вида получилось:

Данное
сообщение
пишем
с
новой
строки

saurbeck

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

Выделить код

Код:

var text = ['Данное сообщение пишем с новой строки'];

iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=ACTION:* ATTR=CLASS:message* CONTENT="'+ text[0].replace(/\s/g, '\r\n') +'"');

Squatter пишет

saurbeck

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

Выделить код

Код:

var text = ['Данное сообщение пишем с новой строки'];

iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=ACTION:* ATTR=CLASS:message* CONTENT="'+ text[0].replace(/\s/g, '\r\n') +'"');

Благодарю!
Хотя тут на самом деле мне надо было не все слова с новой строчки, а только некоторые. Вообще-то текст довольно большой и некоторые предложения надо писать как есть, а некоторые с новой строчки. А как так сделать? Может можно с помощью .splite("\n"); ?

Заранее в текст вбейте символ переноса строки в нужные места

Есть же примеры

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


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

Выделить код

Код:

var tx = ['Данное сообщение пишем с \nновой \n\n\nстроки'];

var txarea = window.document.querySelector('textarea[class^="message"]');
txarea.value = tx[0];

saurbeck
... "Text first stroke<br>2 stroke"

Squatter
Благодарю! Вариант работает.

20-10-2019 19:35:26

InfSub пишет

saurbeck
... "Text first stroke<br>2 stroke"

А тут что-то не понял я. Если в текст добавить <br> (этот вариант знака новой строки), то вместо новой строки это и прописывается вместе с текстом. Это ж для iim подходит. А если в массивах использовать, то как? Что-то не получается записать так, чтоб новая строка получалась... Можно более подробней?

Подскажите пожалуйста как сохранять текст по столбцам в csv файл (таблицу Ексель)? Есть две команды сохраняющие разный текст:

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=TD ATTR=class:order-info EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=order-num-box.csv');
   iimPlayCode('TAG POS=1 TYPE=A ATTR=class:baobei-name EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=order-num-box.csv');


Как записать так, чтоб первый текст сохранялся бы в первый столбец, второй -  во второй (и т.д)?

saurbeck
Не совсем верный пример привел про <br>
Он работает если нет кавычек, а пробелы заменены тегом <sp>

По поводу csv откройте faq там все написано

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

Выделить код

Код:

iimPlayCode('Set !extract Текст[extract]текст\nTAG POS=1 TYPE=A ATTR=class:baobei-name EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=order-num-box.csv');

InfSub а что за Текст[extract]текст? Это так и надо чтоб было написано?
и по поводу faq: о каком faq идёт речь? Если о том, что у вас в подписи Мини FAQ по iMacros for Firefox, то там этого нету. Может о каком-то другом faq идёт речь?

PS пока разобраться так и не удаётся, как же всё таки сохранять текст в разные столбцы unknw.gif

saurbeck
Основной FAQ всегда на офф сайте.
В Мини-faq присутствуют ссылки на обучающее видео, которое вы явно не смотрели, и чего вы после этого хотите? Чтобы все сделали за вас?

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

InfSub
Нашёл в основном FAQe рабочий способ сохранения текста по столбцам попроще:

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=TD ATTR=class:order-info EXTRACT=TXT\nTAG POS=1 TYPE=A ATTR=class:baobei-name EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=order-num-box.csv');


Реально работает и сохраняет текст в разные столбцы, так как мне и надо было. Но там нет SET !EXTRACT. Поэтому, для чего вы SET !EXTRACT в данном случае применили... непонятно.
Можете пояснить?

В Интернете написано, что переменая в match() указывается через new RegExp(url)
Но всё ровно, что-то не получается у меня.

Открываю сайт и после домена имени через слеш, стоит ник.
Данный ник помещаю в переменную и хочу, что бы указывалось в match()

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

Выделить код

Код:

var массив = []
var url = window.location.pathname.replace(/./,'') // CatsPleasant (разные ники)

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

try {
// извлекаем ссылки  с сайта
var links = content.document.getElementsByTagName('a')[i].getAttribute('href');
} catch (error) {}

if(links.match(/url\/status.\d+$/gi)){
массив.push(links)
}

}

alert(массив)

Алим
Научитесь грамотно формулировать задачу
Если вы упоминаете про RegExp() то где он у вас в коде?
Где приведены примеры входных данных, которые вы обрабатываете?

23-10-2019 18:31:36
Зачем у вас модификатор "g" в рег. выражении?
Читайте как работает match() с данным модификатором и без него

Алим
Примерно так

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

Выделить код

Код:

if(links.match(new RegExp(url + '/status.\\d+', 'i'))){
  массив.push(links)
}

Squatter
700 раз пересоздавать одно и тоже рег. выражение... оптимизацией как-то не пахнет...
Алим
зачем вам url в рег. выражении, с высокой долей вероятности могу сказать, что вам хватит /status.(\d+)$/i без всяких new RegExp()
зачем использовать более ресурсоемкий match() там где достаточно использования regexp.test(str)
не надо придумывать велосипед там, где он не нужен

InfSub, я на цикл не смотрел, т.к. он там вообще неуместен в таком виде. Наличие try{...} catch{...} не смутило? ;)
А так, вполне обыденная практика генерировать так динамические регулярки.

Судя по коду ему нужно при листинге страниц извлекать из pathname уникальный ник и подставлять его в регулярку,
с помощью которой он собирает в массив ссылки со страницы соответствующие нужному паттерну включающему ник.
Естественно, конечно оптимально было бы сразу собрать в коллекцию все ссылки методом querySelectorAll('a'); и согласен по поводу test()

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

Выделить код

Код:

var arr = [];
var url = window.location.pathname.substr(1);
var nodes = window.document.querySelectorAll('a');
var re = new RegExp(url + '/status\\.\\d+', 'i');

for (i=0;i<nodes.length;i++) {
  var link = nodes[i].href;
  if (re.test(link))
    arr.push(link);
}

window.console.log(arr);

Всем привет!
Иногда появляется окно от прокси где просит указать логин и пароль,как его проигнорировать это окно?
Появляется окно и скрипт зависает,надо это окно просто проигнорировать

Gergi
Можно с помощью .vbs.
По имени title,..... если есть, то жмякает на F4.
Оберни в while.

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

Выделить код

Код:

Set shell = WScript.CreateObject("WScript.Shell")
title = "Authentication Required"
 

If shell.AppActivate(title) Then
    shell.SendKeys "%{F4}" 
End If

Всем привет! Подскажите как массивы переносить в файл и брать оттуда? Суть такова: имеем 100500 различных ников, которые находятся в массиве и скрипт рандомно выбирает один из них (в цикле). Можно конечно эти 100500 ников записать самом в js-скрипте и брать оттуда, но зачем захламлять скрипт? Тем более что кроме ников может быть ещё другие данные, которые тоже в массиве и их может быть 100 раз по 100500. Поэтому предпочтительней брать из файла, точнее файлов, в которых записаны различные данные массиов.
Подскажите как делать чтоб массивы отдельным файлом были и js-скрипт оттуда мог их брать?

п.п. 2.1

InfSub

saurbeck
прочесть вики по imacros, для понимания основных команд, посмотреть видео-уроки из Мини FAQ в данном разделе, научиться пользоваться поиском, по форуму/разделу/теме и найти как прочитать файл не средствами iMacros, а с помощью js (при необходимости)
дальнейшие вопросы из серии "мне лениво..." будут караться по правилам форума и данного раздела

dim222 пишет

Gergi
Можно с помощью .vbs.
По имени title,..... если есть, то жмякает на F4.
Оберни в while.

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

Выделить код

Код:

Set shell = WScript.CreateObject("WScript.Shell")
title = "Authentication Required"
 

If shell.AppActivate(title) Then
    shell.SendKeys "%{F4}" 
End If

Когда всплывает окно я просто пальцем F4 нажимаю но не закрывает окно.
И логин пароль не хочет писать в окно
Вот код,ип и порт вставляет а логин и пароль не хочет

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

Выделить код

Код:

SET !ERRORIGNORE YES
TAB CLOSEALLOTHERS
SET !DATASOURCE C:\Vkontakte\IP.txt
SET !DATASOURCE_LINE 1
SET !DATASOURCE_COLUMNS 5
CLEAR
ONLOGIN USER={{!COL3}} PASSWORD={{!COL4}} 
SET IPHTTP   {{!COL1}}
SET IPSSL    {{!COL1}}
SET IPFTP    {{!COL1}}
SET IPSOCKS  {{!COL1}}
SET SOCKSVER "5"
SET PORTALL  {{!COL2}}
URL GOTO=about:config
WAIT SECONDS=2
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.type",1);")
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setBoolPref("network.proxy.share_proxy_settings",true);")
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setBoolPref("network.proxy.share_proxy_settings",false);")
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref("network.proxy.http",'{{IPHTTP}}');")
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.http_port",{{PORTALL}});")
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref("network.proxy.ssl",'{{IPSSL}}');") 
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.ssl_port",{{PORTALL}});")
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref("network.proxy.ftp",'{{IPFTP}}');")
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.ftp_port",{{PORTALL}});") 
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref("network.proxy.socks",'{{IPSOCKS}}');")
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.socks_port",{{PORTALL}});")
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.socks_version",{{SOCKSVER}});")
TAB OPEN
TAB T=2
URL GOTO=https://vk.com/login
WAIT SECONDS=3


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

Gergi
В .iim я тебе не помогу, ток с js

Всем привет! Столкнулся с проблемой, при запуске imacros mozila portable 58  на сайте делает несколько циклов быстро, потом начинает заметно подтормаживать  и тормозит сильнее с каждым циклом. Как победить это явление?

Alik123
Использовать старые версии FF

InfSub пишет

Использовать старые версии FF

на сколько старые? есть сылки или версии напиши?

Всем привет!
Так и не могу решить вопрос с диалоговым окном :(
Выскакивает окно от прокси где просит ввести логин и пароль от прокси,и тормозится работа скрипта не вводит никакие данные и не закрывается. Что можно сделать что бы избавиться от него?

Alik123
Все зависит от сайта с которым придется работать, с некоторыми и 3.6 работает, с другими - 35, с третьем не ниже 40 и т.д.
Как вариант, периодически перезапускать ff это также обсуждалось в теме и приводились примеры cmd скриптов для этого

Где можно скачать имакрос для 56й мазилы? Не могу его установить всё время пишет что имакрос повреждён

26-11-2019 14:31:36

Gergi пишет

Где можно скачать имакрос для 56й мазилы? Не могу его установить всё время пишет что имакрос повреждён

Всё установил,вопрос исчерпан.

Здравствуйте.
Пользуюсь ай-макросом  Но не устраивает что количество повторений только 99, если задаю больше то выскакивает ошибка
FreewareLimit: Freeware version limit exceeded: number of iterations 116 exceeds max value 100
как нибудь решить эту проблему можно? ну хотя бы до 999 что ли...

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

Используй старые версии мазилы и имакроса с поддержкой JS

Константин1215
JS в помощь (циклы) на версиях iMacros до 8.9.7 включительно

PRESIDENT пишет

Используй старые версии мазилы и имакроса с поддержкой JS

InfSub пишет

JS в помощь (циклы) на версиях iMacros до 8.9.7 включительно

Ну чего вот вы издеваетесь?   "Грешно смеяться над несчастным"  С    :)
Если бы я умел работать с JS да разве бы я здесь показался с подобной глупостью?
Короче нашел я какая у меня версия, кажется 10.0.2
Получается что в этой "улучшенной"  версии нет такой опции. В принципе логично. Улучшения же делаются не для того чтобы было лучше, а для того чтобы чаще покупали. :(
Ладно. Нельзя так нельзя. В принципе я немного выкрутился, задал сразу на полную 50 строк но через WAIT SECONDS=1
Или это может только в бесплатной версии такие ограничения, что 50 строк, 99 циклов?
Так и придется JS изучать на старость лет то... Вот только его мне еще не хватало!
Алгол, Фортран, Бейсик, команды DOS  G-коды. Теперь еще вот JS ....  Мож лучше комп разбить? Оно вроде как проще и заморочек никаких...  :)

Константин1215
в версии 8.9.7 - 9999 циклов и она умеет js
и ни кто над вами не издевается, все мы когда-то учились на данном форуме и iMacros'у и js

Константин1215 пишет

Алгол, Фортран, Бейсик, команды DOS  G-коды

тем более - основы js вы схватите на лету, а ООП от вас никто и не требует, достаточно основ, а далее - как пойдет
во всяком случае код вида:

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

Выделить код

Код:

var i;
for(i=0; i<9999; i++){
    iimPlayCode(/* тут некое нужное действие */);
};


или подобный но с while(); проблем у вас вызвать не должен

InfSub пишет

проблем у вас вызвать не должен

Конечно не вызывает. :)
Тут дело в желании. Просто уже не хочется. Опять тратить время на очередное никому не нужное занятие.
Опять изучать назначение команд, грамматика, орфография. пунктуация. А еще же все и очень коряво!
Это же не ЕСКД и не система децимальных номеров! :)
Правда вот пользуюсь уже немного макросами от аймакрос для мозилы. Удобно!
Поэтому, видимо деваться некуда, придется изучать.  :)
Может подскажете какие нибудь курсы для желающих изучить JS ?
Или можно здесь вопросы задавать?
Сразу вот и вопрос.
версия аймакроса 8.9.7 лучше чем  10.0.2 ?  или можно все таки ее не ставить и как нибудь удастся приспособиться к существующей?
но если все же рекомендуете 8.9.7 то тогда пожалуйста ссылку где ее лучше взять. Чтобы без косяков и багов и тем более вирусов шпионских.

Константин1215
официально 8.9.7 уже удалена из всех репозитариев, к сожалению, так что только ссылки данные вам пользователями - проверка на вирусы это уже ваша забота
можете скачать например от сюда:

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


да, 8.9.7 самая стабильная и самая продвинутая из всех (стабильнее были только некоторые более старые версии, но работали они только с более старым js)
все что выше 8 версии - либо не умеет js, либо умеет, но очень криво, половина команд iMacros в них не работает, js также отрабатывает с ошибками (можете поискать по разделу iMacros на форуме комментарии к версии 9.0.3)

курсы:

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


вопросы можно и здесь задавать, но скорее в контексте специфики работы c iMacros

Выделить код

Код:

https://yadi.sk/d/lm7Mc8s1c7ZPwQ
InfSub пишет

вопросы можно и здесь задавать,

Благодарю за обстоятельный ответ! 
Посмотрю, поинтересуюсь.

Привет! Какая версия аймакрос годится для последней версии фаерфокса, ну то есть для 72-ой?
или уже ни какая? Другими словами, подскажите как на последней версии фаерфокса работать аймакросом?

точнее как установить версию 8.9.7 на  самый последний фаерфокс?

saurbeck пишет

точнее как установить версию 8.9.7 на  самый последний фаерфокс?

Ни как
Для этого есть более ранние портативные версии FF

Привет. Подскажите пожалуйста

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

Выделить код

Код:

TAG POS={{!loop}} TYPE=a ATTR=*
set !loop eval("var s=\"{{!loop}}\"; if(s < 8){s=\"{{!loop}}\";} else 10")


Как сделать так что бы LOOP перескочил 9 шаг. Т.е после 8-го был 10-й. Спасибо

mnemon84
Прочтите faq по !loop
!Loop принимает значение единожды и более не меняется вручную, только автоматически
Используйте другую переменную

Хорошо спасибо. А еще такой вопрос. VAR1 принимает значение LOOP. У меня в коде синтактическая ошибка.

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

Выделить код

Код:

set !var1 eval("var s = \"{{!LOOP}}\"; if(s > 8) {s = s + 1}; else s")
PROMPT {{!VAR1}}


После 8-го LOOPa выдает значения 81, 91... Как правильно написать код? Подскажите пожалуйста

mnemon84
{{!LOOP}} число а не текст, его не нужно обрамлять в кавычки, во всяком случае в eval(), если не хотите неожиданностей
перед else точка с запятой не ставится - учите синтаксис js

10-01-2020 16:32:23

mnemon84 пишет

Как правильно написать код?

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

Выделить код

Код:

set !var1 eval("var s = {{!LOOP}}; (s > 8) ? s += 1 : s")
PROMPT {{!VAR1}}

InfSub
В imacros 8.9.7 работает, а вот на 10.0.2 пишет: MacroError: Missing host permission for the tab, line: 1
А хотелось бы в десятке
И, кстати, в 10-ке не могу понять как делать макросы на js. В 8-ке просто, переименовываешь файл, меняешь расширение на .js и все. В десятой версии так не получается.

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

mnemon84 пишет

не могу понять как делать макросы на js

создать/переименовать файл в js в папке iMacros\Macros средствами самой операционной системы, видимо очень сложная задача

10-01-2020 18:04:05

mnemon84 пишет

В десятой версии так не получается.

вы сами себе придумали проблему, уже не однократно обсуждалось, что не надо использовать iMacros версий выше 8.9.7, что не так? хотите пожаловаться на судьбу, для этого есть тема Флейм, но не надо в данной теме устраивать флуд не по делу, все что можно было сказать о косяках 10й версии уже не однократно было сказано, вопрос закрыт

InfSub пишет

Для этого есть более ранние портативные версии FF

А какая на ваш взгляд портабельная версия ФФ самая наиболее продвинутая из тех что работают с  8.9.7 ? По моим наблюдениям это 56-тая и 52-рая ESR. Казалось бы 56 более выше, значит она продвинутее, но 52-рая это ESR (!), а значит обновлялась более продолжительное время и возможно даже после того как про 56-тую уже забыли. И  вот тут надо выбрать: какая версия всё таки лучше в плане соответствия современным сайтам, потому что есть такие сайты, на которых некоторые возможности работают только с самыми новейшими версиями браузеров. Поэтому, хотелось бы ваше мнение, что лучше: 52-рая или 56-тая версия?
Или есть какая-то другая портабельная версия ФФ, ещё лучше и продвинутее чем те, что я предложил, работающие с аймакросом  8.9.7 ?

saurbeck
Вам нужна скорость и стабильность или понторезка со скоростью черепахи?
Там где работает 3.6.6 (и iMacros 8.7.0.0) я использую 3.6.6, там где не работает 3.6.6 - я использую 35 или чуть более поздние версии, в зависимости от задачи и поддержки сайта

InfSub пишет

в зависимости от задачи и поддержки сайта

вот это ключевые слова! тот сайт на котором мне надо работа аймакроса со старыми версиями ФФ не хочет работать полноценно (не все функции открываются на старых ФФ). И в придачу ко всему если версия ФФ старая,то высока вероятность того, что "спалит" сайт новорега. Ну это как с гугло-капчей - чем более экзотичней браузер, тем больше шансов что тебя "спалят", поэтому желательно использовать наиболее распространенные версии ФФ.  А какие наиболее распространенные - понятное дело, наиболее современные, то есть последние. Но поскольку последние версии ФФ не работают с 897, то приходится идти на компромис и использовать и так что-то по возможности старое, например 52 или 56 версии. Так какая из этих версий наиболее продвинутая? Или вы не знаете?

saurbeck
Кто мешает заменить юзер агент?

20-01-2020 18:24:26
saurbeck
Что вы подразумеваете под продвинутостью? Естественно более поздняя будет иметь больше изменений и улучшений, в том числе и адаптаций под современные реалии, вопрос только в необходимости данных изменений

InfSub пишет

saurbeck
Кто мешает заменить юзер агент?

удалено, п.п. 2.12

20-01-2020 19:37:22
На самом деле, кроме юрезагента есть ещё куча чего в браузере. И продвинутые сайты вычисляют пользователя отнюдь не по одному только юрер-агенту.

флейм
PS Вы ту меня видать за пятилетнего дитёнка из детского сада держите, раз интересуетесь таким бредом как "кто мешает заменить юзер-агент". А действительно, кто мешает? Может вы знаете? Ну ка поведайте, кто ж это мешает? Кто это мерзавец, который мешает???

замечание

InfSub

saurbeck
Работаю на 55.0.3. Устраивает во всем!!!
Подменять потраха можно практически все (удобно для мультиков).

saurbeck пишет

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

бред, ИМХО - это придти и интересоваться продвинутостью версий, так что каков вопрос.... Если уж вам так любопытно, change log ни кто не отменял

dim222 пишет

Работаю на 55.0.3. Устраивает во всем!!!Подменять потраха можно практически все (удобно для мультиков).

Меня как бы тоже устраивает и 52-рая и 56-тая. НО! Есть такой момент: когда меняю юзерагент например от Oперы, то в 56-той версии сайт открывается без некоторых картинок, без многих. И можно было бы подумать что так оно и должно быть. Но не тут-то было: если тоже самое, с тем же самым юзерагентом Оперы я проделываю с Фаерфоксом самой последней (или предпоследней (70-72) версии, то на сайте ничего не пропадает, картинки никакие не пропадают и всё отображается так, как будто я реально на Опере захожу. То есть смена юзерагента и там и там - не одно и тоже. Поэтому такая фигня со старыми (ниже 70-ой) версиями ФФ.

Всем привет!
Помогите плз аймакросом перейти на страницу разширения фаерфокс.
не хочет кушать юрлу типа

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

Выделить код

Код:

VERSION BUILD = 8970419 RECORDER = FX
TAB T = 1
GOTO URL = moz-action: visiturl, {"url": "moz-extension: //89fb70d6-67d2-47c2-8065-bdbcb532b409/html/panel.html", "input": "moz-extension: // 89fb70d6 -67d2-47c2-8065-bdbcb532b409 / html / panel.html "}


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

потом пробовал содать файл.html туда добавил этую ссылку, imacros'oм открыл файл, кликнул по елементу, но ничего не произошло.

InfSub

Всем привет! Подскажите код который добавляет текущую дату (дд.мм.гггг) к сохраняемому тексту, например такой команде:

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

Выделить код

Код:

iimPlayCode('SET !EXTRACT  TAG POS=3 TYPE=DIV ATTR=TXT:order<SP>number* EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=dokument.csv');

saurbeck
https://wiki.imacros.net/!NOW

16-02-2020 19:41:53
andreas1990
Что собственно вы ходите сделать?

Подскажите пожалуйста как можно записать строчку вывода информации о порядковом номере аккаунта (+i) и тут же рядом чтоб ещё номер по списку (+s)? (Скрипт работает в цикле)
Если записать так:

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

Выделить код

Код:

iimDisplay('Аккаунт '+i +s);


то оно всё в куче получается, пишет Аккаунт 23894, где 23 - номер по порядку, а 894 номер аккаунта. Так я интересуюсь как записать так, чтоб было раздельно, примерно такого вида: Номер 23, Аккаунт 894

saurbeck
Здесь не форум по основам js

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

Выделить код

Код:

iimDisplay('Аккаунт '+i+' '+s);

Ребят, очень нужна помощь.
По работе нужно перенести портал. Там все очень не просто и хитро.
Написал скрипт. С 1 сайта скачиваю скриптом файлы разных расширений и сохраняю в нужную папку.
Вот так.

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

Выделить код

Код:

ONDOWNLOAD FOLDER=D:\imacros_Downloads FILE=123 WAIT=YES
TAG POS=1 TYPE=SPAN ATTR=CLASS:instancename


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


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

TAG POS=1 TYPE=INPUT:FILE ATTR=NAME:repo_upload_file CONTENT=D:\imacros_Downloads\123.doc


код публикуется в тегах code под спойлером
Но фишка в том что тут надо указывать расширение, а они у меня разные. Со звездочкой в конце не прокатывает он в название файла звездочку ставит и пишет что файл не найден.
Как выбрать (загрузить) файл с компа по названию с любым расширением ?

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

Начиная с imacros 10 версии, добавили такую команду !DOWNLOADED_FILE_NAME которая позволяет скопировать имя скачиваемого файла. Но там отключили поддержку запуска Самого скрипта JS.

В общем нужна помощь. Уже второй день бьюсь над этой проблемой HELP.

InfSub

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

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

Выделить код

Код:

//Cобираем данные название всех файлов в вашей папке в массив
function OpenPath(localLink) {
  var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
  file.initWithPath(localLink);
  var entries = file.directoryEntries;
  var arrFileName = [];
  while(entries.hasMoreElements()) {
    var entry = entries.getNext();
    entry.QueryInterface(Components.interfaces.nsIFile);
    arrFileName.push(entry.leafName);
  }
  return arrFileName;
}

// В качестве параметра при вызове передаёте локальную ссылку на каталог
var f_names = OpenPath("D:\\imacros_Downloads");

// переклеивание (конвертация) массива до нужного вида чтобы с ним было удобнее работать (через запятую)
var str = f_names.join(', ')+',';  // пример: 1, 2, 3, 4, 5
//window.console.log(str);  -этой командой можно проверить что получилось в консоле браузера. 

//Далее ищем файл по первым буквам например урок1фай... 
var result = str.match(/урок1фай([^,]*?)\s*,/i); 
// window.console.log('Результат = "' + result[1] + '"'); это проверка ели надо, что у нас получилось (дописывает окончание к неполному имени и выводит полное имя файла)

//объединяем путь папки с именем найденного файла, и вставляем форму для выгрузки 
var result1="TAG POS=1 TYPE=INPUT:FILE ATTR=NAME:repo_upload_file CONTENT=D:\\imacros_Downloads\\" + result[0];

// Заливаем наш файл на сайт
iimPlayCode(result1);


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

Привет! Ребята подскажите пожалуйста как можно извлекать временную почту с сайта tempmail.io
Суть такова: на сайте временной почты имеется сама временная почта, но как её аймакросом взять, непонятно. Пробовал через CLASS искать решение, но увы, не получилось.
Видимо там надо задействовать не CLASS, а value? На скриншоте видно, что сама почта находится в value="d881ea@mepost.pw"
А как записать команду типа такой:

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=DIV ATTR=CLASS:message__info-container*container* EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=Proba.txt');

скрытый текст
6ucNrzj.png

saurbeck

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

Выделить код

Код:

let mail = window.document.querySelector('#email').value;

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

Благодарствую! А как это сохранить?

Как записать, чтоб оно в файл сохранилось? Вот по аналогии с этой командой?

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=DIV ATTR=CLASS:message__info-container*container* EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=Proba.txt');

unknw.gif

InfSub

saurbeck

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

Выделить код

Код:

let fileName = 'C:\\Proba.txt',
    mail = window.document.querySelector('#email').value;


imns.FIO.writeTextFile(imns.FIO.openNode(fileName), mail);

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

Благодарствую!

Осталось теперь только голову поломать как записать так, чтоб оно не в файл сохранялось, а просто в буфер обмена. Даже не то что бы в буфер обмена, а просто извлекалался бы емейл и вставлялся бы в нужное поле на другой странице сайта. Вот по аналогии с командой EXTRACT. Но тут у вас экстракта нету, тут вообще всё на другом уровне. Я с таким никогда не сталкивался. Мне проще с простыми командами работать типа EXTRACT. 
Я и спросил у вас как сохранить в файл только потому что думал увижу как извлекать емейл. А тут ничего не понятно мне. Щас надо опять у вас просить подсказать как записать так, чтоб оно не в файл сохранялось, а просто извлекалось. Мне в файле оно не надо. Надо просто извлечь емейл и затем вставить его в нужное поле. Но как это записать тут?


замечание

InfSub

saurbeck
Попробуй одинарный слэш в пути ('C:\Proba.txt')
Либо отсутствуют права на на сохранение в диске С.

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

Хорошо, получилось сохранять. Благодарствую!

Осталось теперь только голову поломать как записать так, чтоб оно не в файл сохранялось, а просто в буфер обмена. Даже не то что бы в буфер обмена, а просто извлекалался бы емейл и вставлялся бы в нужное поле на другой странице сайта. Вот по аналогии с командой EXTRACT. Но тут у вас экстракта нету, тут вообще всё на другом уровне. Я с таким никогда не сталкивался. Мне проще с простыми командами работать типа EXTRACT.
Я и спросил у вас как сохранить в файл только потому что думал увижу как извлекать емейл. А тут ничего не понятно мне. Щас надо опять у вас просить подсказать как записать так, чтоб оно не в файл сохранялось, а просто извлекалось. Мне в файле оно не надо. Надо просто извлечь емейл и затем вставить его в нужное поле. Но как это записать тут?

InfSub

saurbeck
В первом примере как раз извлекается майл. Вставляй его куда тебе необходимо.
......
т.е.
1 -  Заходишь на сайт tempmail.io
2 -  let mail = window.document.querySelector('#email').value; (этим ты получил сам майл)
3 -  заходишь на другую страниц, какая там у тебя......
4 -  В нужное поле ставишь майл (mail) (что-то типа "window.document.querySelector('твой селектор').value = mail;")

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


Вообще я сперва из списка (файла) извлекал готовые майлы и вставлял в нужное поле, было:

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

Выделить код

Код:

immPlayCode('SET !DATASOURCE tochka-gmail.txt\nSET !DATASOURCE_LINE '+i+'\nSET !EXTRACT {{!COL1}}'); emailVer=iimGetExtract();
   immPlayCode('TAG POS=1 TYPE=INPUT:EMAIL FORM=NAME:codeVerificatorForm ATTR=ID:emailVerification CONTENT='+emailVer+'');
   immPlayCode('TAG POS=1 TYPE=BUTTON FORM=NAME:codeVerificatorForm ATTR=TXT:Отправить');


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


Теперь надо не из списка готовых майлов брать а с сайта tempmail.io. Хорошо, как брать с сайта майлы, понятно.
Теперь как вставлять в нужное поле, конкретно у меня строчка такая:
   

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

Выделить код

Код:

immPlayCode('TAG POS=1 TYPE=INPUT:EMAIL FORM=NAME:codeVerificatorForm ATTR=ID:emailVerification CONTENT='+emailVer+'');


удалено избыточное цитирование
замена названий встроенных функций на свои на форуме запрещена


значит вместо '+emailVer+' надо записать mail?


замечание


InfSub

saurbeck пишет

значит вместо '+emailVer+' надо записать mail?

да

Расширение  iMacros for Firefox в приватном окне Firefox как-то можно заставить работать?

Всем форумчаном привет.
Помогите пожалуйста, знаний немного не хватает (что поделать если тупой я)
Вообщем. Имеет такой код

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

Выделить код

Код:

VERSION BUILD=10021450
URL GOTO=https://site
SET !DATASOURCE E:\kp\kpid.txt
SET !DATASOURCE_LINE {{!LOOP}}
SET !LOOP 1
ADD !EXTRACT {{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:id CONTENT={{!COL1}}
TAG POS=7 TYPE=DIV ATTR=TXT:
TAG POS=1 TYPE=A ATTR=ID:add
WAIT SECONDS=2
TAG POS=7 TYPE=A ATTR=HREF:javascript:void(0)
WAIT SECONDS=5
TAG POS=1 TYPE=A ATTR=ID:start-sinoni
WAIT SECONDS=7
TAG POS=1 TYPE=A ATTR=ID:save
WAIT SECONDS=7


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

В кратце: Заходит на кинопортал в админку, добавляет из файла по циклу начиная с 1 ID с кинопоиска и нажимает сохранить

Вопрос: Как сделать проверку в админке сайта, например если поле не заполнено, то пропускаем ID и идем дальше.
Проверку можно делать по полю в админке

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

Выделить код

Код:

<input type="text" class="form-control" name="movie.country" value="" placeholder="ТУТ СТРАНА" style="font-weight: normal; font-size: 14px;" autocomplete="off" autocapitalize="off" spellcheck="false">

код публикуется в тегах code под спойлером
т.е. если Страна не заполнена, то пропускаем ID и запускаем цикл по новой.

Всем спасибо, надеюсь описал понятно


InfSub

maximka_l
Используйте imacros 8.9.7 и js, на чистом imacros вы не сможете проверить условие

Всем привет!:rock:
У меня до сих пор идёт борьба с диалоговым окном где просит ввести логин и пароль от прокси.
Я сделал вызов через vbs вот код

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

Выделить код

Код:

Set shell = WScript.CreateObject("WScript.Shell")
title = "Authentication Required"
 

If shell.AppActivate(title) Then
    shell.SendKeys "%{F4}" 
End If


По имени title,..... если есть это окно, то жмякает на F4. Скрипт стоит на удалёнке,и всё работает если я подключен к серверу рабочему столу,если отключаюсь то уже не работает!
Задача такая чтобы игнорировать это окно иначе оно останавливает работу.

Gergi

Раньше решалось about:config

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

Выделить код

Код:

signon.autologin.proxy=true
network.websocket.enabled=false


Попробуйте это

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

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

Уже пробовал эти варианты не помогло :( Может есть вариант вообще отключить это окно чтобы никогда не появлялось?


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


InfSub

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

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

Выделить код

Код:

<div class="item-params">
  <ul class="item-params-list">
  <li class="item-params-list-item"> <span class="item-params-label">Марка: </span>Nissan </li>
  <li class="item-params-list-item"> <span class="item-params-label">Модель: </span>X-Trail </li>
  <li class="item-params-list-item"> <span class="item-params-label">Поколение: </span>II рестайлинг (2010—2015) </li>
  <li class="item-params-list-item"> <span class="item-params-label">Модификация: </span>2.5 4WD CVT (169 л.с.) </li>
  <li class="item-params-list-item"> <span class="item-params-label">Год выпуска: </span>2012 </li>
  <li class="item-params-list-item"> <span class="item-params-label">Пробег: </span>138000&nbsp;км </li>
  <li class="item-params-list-item"> <span class="item-params-label">Состояние: </span>не битый </li>
  <li class="item-params-list-item"> <span class="item-params-label">Владельцев по ПТС: </span>2 </li>
  <li class="item-params-list-item"> <span class="item-params-label">VIN или номер кузова: </span>Z8NT************* </li>
  <li class="item-params-list-item"> <span class="item-params-label">Тип кузова: </span>внедорожник </li>
  <li class="item-params-list-item"> <span class="item-params-label">Количество дверей: </span>5 </li>
  <li class="item-params-list-item"> <span class="item-params-label">Тип двигателя: </span>бензин </li>
  <li class="item-params-list-item"> <span class="item-params-label">Коробка передач: </span>вариатор </li>
  <li class="item-params-list-item"> <span class="item-params-label">Привод: </span>полный </li>
  <li class="item-params-list-item"> <span class="item-params-label">Руль: </span>левый </li>
  <li class="item-params-list-item"> <span class="item-params-label">Цвет: </span>фиолетовый </li>
  <li class="item-params-list-item"> <span class="item-params-label">Комплектация: </span>LE </li>
  <li class="item-params-list-item"> <span class="item-params-label">Место осмотра: </span>Московская область, Сергиев Посад, Московское шоссе, 17 </li>
  </ul>
   </div>

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

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

Как вытянуть только конкретные строки?


InfSub

как вытянуть числа из скобок ?
(249 л.с.)  - Только числа

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

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

Выделить код

Код:

SET !VAR1 EVAL("'{{!EXTRACT}}'.replace(/(: /g, '');")

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


InfSub

Блин чот я перегрелся походу!
Не могу понять почему не передаётся объект в анонимную функцию?:usch:

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

Выделить код

Код:

var obj_inject = {
	
	'canvas':{
		
		'r': 0,
		'g': 3,
		'b': -4,
		'a': 2
	}
};

var inject = function(obj) {
	
	window.console.log(obj)
 
};

var script_1 = window.document.createElement('script');
script_1.textContent = "(" + inject + ")(" + obj_inject + ")";
window.document.documentElement.appendChild(script_1);


Знатоки направьте.....что не так???

Так в параметрах вызова же… :/

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

Выделить код

Код:

var obj_inject = {
	
	'canvas':{
		
		'r': 0,
		'g': 3,
		'b': -4,
		'a': 2
	}
};

var inject = function(obj) {
	
	window.console.log(obj)
 
};

inject(obj_inject);

В чём конечная цель?


---------UPD

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


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

Выделить код

Код:

//В макросе выполняем
var win = window.content.document.defaultView.wrappedJSObject;

win.inject = function() {
	window.console.log("test");
};

//В консоле по Ctrl + Shift + k вызываем для проверки

inject();

Squatter
Спасибо что откликнулся!
По твоему варианту я пробовал, но .....блин чот проблема возникает ...Не хотит принимать массив аргументов в :

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

Выделить код

Код:

const imageData = getImageData.apply(cont, [0, 0, width, height]);


код с доступом имён

Выделить код

Код:

var obj_inject = {
		
		'canvas':{
			
			'r': 0,
			'g': 3,
			'b': -4,
			'a': 2
		}
	};
	
	
						
		var canvas_inject = function (obj) {
			
			var win = window.content.document.defaultView.wrappedJSObject;
			
			const toBlob = win.HTMLCanvasElement.prototype.toBlob;
			const toDataURL = win.HTMLCanvasElement.prototype.toDataURL;
			const getImageData = win.CanvasRenderingContext2D.prototype.getImageData;
			
			var noisify = function (canvas, cont) {
				
				const shift = obj;
				const width = canvas.width, height = canvas.height;
				
				const imageData = getImageData.apply(cont, [0, 0, width, height]);
				
				for (let i = 0; i < height; i++) {
					for (let j = 0; j < width; j++) {
						const n = ((i * (width * 4)) + (j * 4));
						imageData.data[n + 0] = imageData.data[n + 0] + shift.r;
						imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
						imageData.data[n + 2] = imageData.data[n + 2] + shift.b;
						imageData.data[n + 3] = imageData.data[n + 3] + shift.a;
					}
				}
			};
			
			  Object.defineProperty(win.HTMLCanvasElement.prototype, "toBlob", {
				"value": function () {
				  noisify(this, this.getContext("2d"));
				  return toBlob.apply(this, arguments);
				}
			  });
			  //
			  Object.defineProperty(win.HTMLCanvasElement.prototype, "toDataURL", {
				"value": function () {
				  noisify(this, this.getContext("2d"));
				  return toDataURL.apply(this, arguments);
				}
			  });
			  //
			  Object.defineProperty(win.CanvasRenderingContext2D.prototype, "getImageData", {
				"value": function () {
				  noisify(this.canvas, this);
				  return getImageData.apply(this, arguments);
				}
			  });
			
		};
	
	canvas_inject(obj_inject['canvas']);

При этом если внедрить самовызывающий скрипт то параметры имеенно объектом не передаются...выдаёт 'undefined'

самовызывающий скрипт

Выделить код

Код:

var obj_inject = {
		
		'canvas':{
			
			'r': 0,
			'g': 3,
			'b': -4,
			'a': 2
		}
	};
	
	
						
		var canvas_inject = function (obj) {
			
			const toBlob = HTMLCanvasElement.prototype.toBlob;
			const toDataURL = HTMLCanvasElement.prototype.toDataURL;
			const getImageData = CanvasRenderingContext2D.prototype.getImageData;
			
			var noisify = function (canvas, cont) {
				
				const shift = obj;
				const width = canvas.width, height = canvas.height;
				
				const imageData = getImageData.apply(cont, [0, 0, width, height]);
				
				for (let i = 0; i < height; i++) {
					for (let j = 0; j < width; j++) {
						const n = ((i * (width * 4)) + (j * 4));
						imageData.data[n + 0] = imageData.data[n + 0] + shift.r;
						imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
						imageData.data[n + 2] = imageData.data[n + 2] + shift.b;
						imageData.data[n + 3] = imageData.data[n + 3] + shift.a;
					}
				}
			};
			
			  Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", {
				"value": function () {
				  noisify(this, this.getContext("2d"));
				  return toBlob.apply(this, arguments);
				}
			  });
			  //
			  Object.defineProperty(HTMLCanvasElement.prototype, "toDataURL", {
				"value": function () {
				  noisify(this, this.getContext("2d"));
				  return toDataURL.apply(this, arguments);
				}
			  });
			  //
			  Object.defineProperty(CanvasRenderingContext2D.prototype, "getImageData", {
				"value": function () {
				  noisify(this.canvas, this);
				  return getImageData.apply(this, arguments);
				}
			  });
			
		};
		
		var canvas_Finger = window.document.createElement('script');
		canvas_Finger.textContent = "(" + canvas_inject + ")(" + obj_inject['canvas'] + ")";
		window.document.documentElement.appendChild(canvas_Finger);

а если конкретно указать значения из ключа, то всё робит!
Что за фигня?

блин чот проблема возникает ...Не хотит принимать массив аргументов в

Не туда… совсем


Ладно, если передать объект по твоему способу с внедрением, то так

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

Выделить код

Код:

var obj_inject = {
		
		'canvas':{
			
			'r': 0,
			'g': 3,
			'b': -4,
			'a': 2
		}
	};
	
	

var canvas_inject = function (obj) {
	
	const toBlob = HTMLCanvasElement.prototype.toBlob;
	const toDataURL = HTMLCanvasElement.prototype.toDataURL;
	const getImageData = CanvasRenderingContext2D.prototype.getImageData;
	
	var noisify = function (canvas, cont) {
		
		const shift = obj;
		const width = canvas.width, height = canvas.height;
			
		const imageData = getImageData.apply(cont, [0, 0, width, height]);
		
		for (let i = 0; i < height; i++) {
			for (let j = 0; j < width; j++) {
				const n = ((i * (width * 4)) + (j * 4));
				imageData.data[n + 0] = imageData.data[n + 0] + shift.r;
				imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
				imageData.data[n + 2] = imageData.data[n + 2] + shift.b;
				imageData.data[n + 3] = imageData.data[n + 3] + shift.a;
			}
		}
	};
			
	Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", {
		"value": function () {
		  noisify(this, this.getContext("2d"));
		  return toBlob.apply(this, arguments);
		}
	});
	//
	Object.defineProperty(HTMLCanvasElement.prototype, "toDataURL", {
		"value": function () {
		  noisify(this, this.getContext("2d"));
		  return toDataURL.apply(this, arguments);
		}
	});
	//
	Object.defineProperty(CanvasRenderingContext2D.prototype, "getImageData", {
		"value": function () {
		  noisify(this.canvas, this);
		  return getImageData.apply(this, arguments);
		}
	});

};


var canvas_Finger = window.document.createElement('script');
canvas_Finger.textContent = "(" + canvas_inject + ")(" + JSON.stringify(obj_inject['canvas']) + ")";
window.document.documentElement.appendChild(canvas_Finger);

Squatter
Тьфу ты блин ........
Мне даже и в голову не пришло перевести в строку Json.
Спасибо....подсказал ...направил!:beer:

26-06-2020 14:49:52
Squatter
Изначально пробовал через"wrappedJSObject", но ошибку выдавало о не достатке аргументов (где писал про массив с аргументами), психанул бросил , так и не понял в чём заморока была.
Если для тебя это очевидные вещи , тыкни носом .

Задача переместить файл из одной папки в другую
Не понимает русских имён в файле и пробел.
Как это указать в регулярке?

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

Выделить код

Код:

Components.utils.import("resource://gre/modules/FileUtils.jsm");

var FFM = {

	moveFile: function (from, to) {			
		var toFileName   =   (/(\w?\:?\\?[\w\-_\\]*\\+)([\w-_]+\.[\w-_]+)/gi).exec(to)[2];
		var toFolderPath =   (/(\w?\:?\\?[\w\-_\\]*\\+)([\w-_]+\.[\w-_]+)/gi).exec(to)[1];
 
		var file   = new FileUtils.File(from);                // Тут инстанс файла, который копируем
		var newFolderPath = new FileUtils.File(toFolderPath); // Тут инстанс папки, куда копируем		
 
		if (file.exists()) {
			try {
				file.moveTo(newFolderPath, toFileName); 
				return true;
			} catch (e) {
				window.console.log(e);
				return false;
			}
		} else {
			return false;
		}
	},
}

FFM.moveFile("C:\\папка\\1 запись.mp4", "E:\\1 запись.mp4");

Ругается на

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

Выделить код

Код:

var toFileName   =   (/(\w?\:?\\?[\w\-_\\]*\\+)([\w-_]+\.[\w-_]+)/gi).exec(to)[2];
var toFolderPath =   (/(\w?\:?\\?[\w\-_\\]*\\+)([\w-_]+\.[\w-_]+)/gi).exec(to)[1];

Алим
Так укажи что русские буквы [а-яА-Я]
Для пробельных символов \s

InfSub пишет

Так укажи что русские буквы [а-яА-Я]
Для пробельных символов \s

Про это я знал, но как правильно туда это вставить, вот в чём вопрос

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

Выделить код

Код:

var toFileName =   (/(\s\w?\:?\\?[\w\-_\\]*\\+)([\w-_]+\.[\w-_]+\.[а-яА-Я]+)/gi).exec(to)[2];
var toFolderPath =   (/(\s\w?\:?\\?[\w\-_\\]*\\+)([\w-_]+\.[\w-_]+\.[а-яА-Я]+)/gi).exec(to)[1];

Алим пишет

туда это вставить

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

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

Алим

а так?

Выделить код

Код:

.match(/(.+\\)(.+)/)[1]

Алим

или так?

Выделить код

Код:

var toFileName =   (/(\w?\:?\\?[\w\-_\\]*\\+)([\w-_]+\.[\w-_]+)/gi).exec(to)[2];
var toFolderPath =   (/(\w?\:?\\?[\w\-_\\]*\\+)([\w-_]+\.[\w-_]+)/gi).exec(to)[1];

dim222
Это все хорошо, но пока Алим не разберётся в принципах составления рег выражения, он так и будет задавать подобные вопросы
Я понимаю если б там реально сложное рег выражение было, но тут же по сути основы

InfSub
Согласен!

03-08-2020 21:19:29
Странно конечно!

InfSub пишет

Алим
Так укажи что русские буквы [а-яА-Я]
Для пробельных символов \s

[а-яА-ЯёЁ]

InfSub

Разобрался, теперь работает

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

Выделить код

Код:

var toFileName =   (/(\w?\:?\\?[\w\-_\\а-яА-Я\s]*\\+)([\w-_а-яА-Я\s]+\.[\w-_]+)/gi).exec(to)[2];
var toFolderPath =   (/(\w?\:?\\?[\w\-_\\а-яА-Я\s]*\\+)([\w-_а-яА-Я\s]+\.[\w-_]+)/gi).exec(to)[1];

Алим
Если вы используете модификатор i то не имеет смысла указывать диапазоны букв в разном регистре
Впрочем для русских букв - проверьте, иногда не работает

InfSub

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

Выделить код

Код:

var toFileName =   (/(\w?\:?\\?[\w\-_\\а-яё\s]*\\+)([\w-_а-яё\s]+\.[\w-_]+)/gi).exec(to)[2];
var toFolderPath =   (/(\w?\:?\\?[\w\-_\\а-яё\s]*\\+)([\w-_а-яё\s]+\.[\w-_]+)/gi).exec(to)[1];

Если в скрипте указано в пути сохранения так - НОвая пАПкА, а на компьютере нет такой папки, то скрипт создаст новую папку с таким же регистром. Если папка уже была "Новая папка", то не создаст новую папку и не перезапишет, а сохраняет именно в неё. Проверил.

InfSub пишет

16-02-2020 19:41:53
andreas1990
Что собственно вы ходите сделать?

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

Добрый день:rock:
В 55й мазиле не хочет вставлять логин,и пароль в окошко прокси,вот тестирую в других версиях мазилы которые ниже всё замечательно работает,а в 55й не хочет,но мне именно 55я нужна.
Вот код IIM

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

Выделить код

Код:

'==\=======/=='
SET !ERRORIGNORE YES
TAB OPEN
TAB T=2
SET !DATASOURCE C:\1\iMacros\IP22.txt
SET !DATASOURCE_LINE 1
SET !DATASOURCE_COLUMNS 5
CLEAR
ONLOGIN USER={{!COL3}} PASSWORD={{!COL4}} 
' Установка параметров 
SET IPHTTP   {{!COL1}}
SET IPSSL    {{!COL1}}
SET IPFTP    {{!COL1}}
SET IPSOCKS  {{!COL1}}
SET SOCKSVER "5"
SET PORTALL  {{!COL2}}
ONLOGIN USER={{!COL3}} PASSWORD={{!COL4}}

' Переход к вкладке настроек
URL GOTO=about:config
WAIT SECONDS=3

' Непосредственная запись настроек

' Команда которая включает прокси 
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.type",1);")

' Устанавливает один протакол для всех одинаковым 
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setBoolPref("network.proxy.share_proxy_settings",true);")
' Установить каждому отдельный прокси 
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setBoolPref("network.proxy.share_proxy_settings",true);")

' Устанавливает HTTP прокси 
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref("network.proxy.http",'{{IPHTTP}}');")
' Установить порт для HTTP прокси
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.http_port",{{PORTALL}});")

' Устанавливаем SSL прокси 
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref("network.proxy.ssl",'{{IPSSL}}');")
' Устанавливаем  порт для SSL прокси 
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.ssl_port",{{PORTALL}});")

' Установка FTP прокси
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref("network.proxy.ftp",'{{IPFTP}}');")
' Установка порта для FTP прокси 
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.ftp_port",{{PORTALL}});")

' Установка SOCKS прокси  
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref("network.proxy.socks",'{{IPSOCKS}}');")
' Установка  порта для SOCKS
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.socks_port",{{PORTALL}});")
' Установка версии SOCKS (4 или 5)
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setIntPref("network.proxy.socks_version",{{SOCKSVER}});")

' Установка логина и пароля прокси
SET !VAR1 EVAL("prefs=Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref("extensions.proxyauth.authtoken",'{{LOGPASS}}');")



TAB T=1


SET !EXTRACT NULL

SET !DATASOURCE C:\1\iMacros\URL.txt
SET !DATASOURCE_LINE 1
SET !DATASOURCE_COLUMNS 5

'PROMPT {{!COL1}}
'WAIT SECONDS=3
TAB CLOSEALLOTHERS
SET !TIMEOUT 10
TAB OPEN
TAB T=2
URL GOTO=https://www.youtube.com/

SET !EXTRACT NULL
WAIT SECONDS=3

Gergi
Бро......переходи на js!
Ну реально удобней так работать!

dim222
У меня нет js

как сказать макросу что бы подождал загрузки страницы? страница динамическая на java
WAIT SECONDS=
SET !TIMEOUT_PAGE x
не подходят
imagesearch тоже не катит так как картинок нету
подскажите оч. нужно

Привет! Ребята подскажите кусок кода чтоб дату текущего времени писало в текстовом файле ява-скрипта при сохранении текста.
Например вот код:

Выделить код

Код:

iimPlayCode('TAG POS=2 TYPE=DIV ATTR=TXT:тут<SP>содержание<SP>текста EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=SMS.txt');

Так тут сохраняется просто текст. А надо чтоб ещё и дата и время после текста приписывались.

Герман пишет

Так тут сохраняется просто текст. А надо чтоб ещё и дата и время после текста приписывались.

А файлик датой именовать а не SMS.txt есть же команда генерации текущего времени будет несколько файлов TXT такого формата 08.10.2020:10:10.txt

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

скрытый текст
oUkVmi8.png

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

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

Выделить код

Код:

<span class="select2-selection select2-selection--single" role="combobox" aria-haspopup="true" aria-expanded="true" tabindex="0" aria-labelledby="select2-currency-container" aria-owns="select2-currency-results" aria-activedescendant="select2-currency-result-db1c-USD"><span class="select2-selection__rendered" id="select2-currency-container" role="textbox" aria-readonly="true" title="USD">USD</span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span></span>

Герман пишет

Думаю надо через

попробуй так

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

Выделить код

Код:

window.document.querySelector('span[id="select2-currency-container"][class="select2-selection_rendered"]').click();


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

Добрый вечер.
Мэтры, помогите пожалуйста, мозга сломал.
есть сайт, биржа

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

в поле ввода под From нужно вводить объем, например 1000
перебрал все стандартные способы типа
скрытый текст

Выделить код

Код:

window.document.getElementById("swap-currency-input").querySelector('.sc-kQsIoO.deMLGG.token-amount-input').value=1000;

window.document.getElementById("swap-currency-input").querySelector('input[class="sc-kQsIoO deMLGG token-amount-input"]').value=1000;

let a = window.document.getElementById("swap-currency-input");
a.getElementsByTagName('div')[0].getElementsByTagName('input')[0].value = 1000;
и прочее


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

Выделить код

Код:

<input class="sc-kQsIoO deMLGG token-amount-input" inputmode="decimal" title="Token Amount" autocomplete="off" autocorrect="off" type="text" pattern="^[0-9]*[.,]?[0-9]*$" placeholder="0.0" minlength="1" maxlength="79" spellcheck="false" value="">


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

Всем привет. Столкнулся с проблемкой.
Авторизуемся в личном кабинете Яндекс Дзена и переходим на страницу редактора


Ссылка на страницу редактор

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

Справа нажимаем - настроить канал.

скрытый текст
f201f3f6ece3.jpg

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

скрытый текст
ae3af08e0e92.jpg

В исходном коде нет INPUT:FILE

Кто нибудь сталкивался с таким?

Всем привет:rock:
Подскажите как записать содержимое файла без двойных кавычек?

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

Выделить код

Код:

for(i=0;i<=2;i++){	
for(a=0;a<=11;a++){
iimPlayCode('SET !EXTRACT 202012'+i+''+a+'-TEST\nSAVEAS TYPE=EXTRACT FOLDER=F:\\20201205-TEST\\ FILE=202012'+i+''+a+'-TEST.txt');
}	
}

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

Азат55555
Попробуй этим

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

Мне нужно в imacros записать выбор нескольких элементов плагина Chosen со страницы https://harvesthq.github.io/chosen/ по типу списка Multiple Select на странице (правое окошко).
imacros определяет поле списка как текстовое. Подскажите, плиз, как написать код для правильного выбора нескольких элементов списка?

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

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

Выделить код

Код:

ONDOWNLOAD FOLDER=C:\img\ FILE=screen.png
WAIT SECONDS=1
TAG POS=1 TYPE=DIV ATTR=ID:adcopy-puzzle-image  CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT


Как сделать чтоб новая картинка не перезаписывала старую, а сохранялась бы как новая (другая) и при этом старая не удалялась? А то получается что новая сохраняется вместо старой.

Герман

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

Выделить код

Код:

ONDOWNLOAD FOLDER=C:\img\ FILE=+_image_{{!NOW:yyyymmdd_hhnnss}} 
TAG POS=1 TYPE=DIV ATTR=ID:adcopy-puzzle-image  CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT

InfSub
Благодарствую!

Приветствую! Подскажите пожалуйста, реально ли реализовать такую задумку: js-скрипт работает в цикле, заходя в аккаунты из списка и выполняя определенные задания. Список длинный. При этом со временем работы скрипта забивается память оперативная и браузера. Помогает перезагрузка браузера. Но при этом цикл, естественно, завершается. Можно ли сделать так, чтоб после перезагрузки браузера скрипт включался снова в цикле и продолжал работу далее в цикле, но именно с того момента, с того аккаунта из списка на котором остановился для перезагрузки? То есть список аккаунтов 1000 логин/паролей. Скрипт отрабатывая первую сотню делает перезагрузку браузера. Потом браузер запускается и продолжает далее цикл уже со второй сотни из этого же списка. После отработки другой сотни снова перезагружается и так далее. Когда таким образом отработает весь список (1000 аккаунтов), то снова всё начинается по кругу. Можно ли так как-нибудь реализовать?

Герман
Что мешает сохранить позицию в файл и считать при запуске скрипта?

InfSub пишет

Что мешает сохранить позицию в файл и считать при запуске скрипта?

На этом форуме не удалось найти пример как это реализовать, нашёл в интернете:

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

Выделить код

Код:

var strlog="тестовое<SP>слово";
var logfile;

logfile = 'SET !EXTRACT NULL' + '\n';
logfile += 'SET !EXTRACT '+ strlog + '\n';
logfile += 'SAVEAS TYPE=EXTRACT FOLDER=* FILE=LOG.txt' + '\n';
iimPlayCode(logfile);

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

Герман

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

Выделить код

Код:

iimPlay("CODE:FILEDELETE NAME=LOG.txt");

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

InfSub


Флуд не по теме

Ух давно я тут не был, думал уже и аккаунт удалили.

С праздничками всех ! :)

У меня тут очередной экзамен, и в его рамках работа с проектом.
Задание: работа с вебсервисом через API, JSON, SQL (создать свой ДБ).

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

Я хочу что то по оригинальнее. :cool:
Тут увидел в новостях что биткоин опять запредельно поднялся,
вот подумал может с криптобиржей  что то замутить.:/

Помнится тут было много народу, кто криптой барыжничал,
если есть ещё кто живой, подкиньте биржи крипты с нормальным описанием API.

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

Выделить код

Код:

var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
var Cc=Components.classes, Ci=Components.interfaces; 
var prf=Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefBranch);
var str=Cc['@mozilla.org/supports-string;1'].createInstance(Ci.nsISupportsString);
str.data='Mozilla/5.0 (Windows NT 6.3; rv:3.0) Gecko/20100101 Firefox/3.0';
prf.setComplexValue('general.useragent.override',Ci.nsISupportsString,str);

Подскажите как реализовать этот кусок кода в IIM

PRESIDENT
Ух какие люди!!!!!
Многому меня ты в свое время научил, спасибо тебе!
По поводу биржи то советую Binance! Многие на нём сидят.
Я тоже кодю для него ....но ток на питоне.....Нравится на нём кодить.....

09-01-2021 22:08:43
PRESIDENT
На счёт API на Binance (если заинтересовало) посмотри здесь. Всё более-менее разжёвано, уверен разберёшься!!!

Здравствуйте!
Стоит задача сделать парсинг сайта

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.
. Есть теоретический вопрос по ускорению процесса. Поскольку мне предлагают (фрилансеры) поочередное открывание страниц, то я боюсь, что это долго будет очень. Как-то я для другой задачи следующее: открывал скриптом множество новых вкладок (несколько десятков), делал небольшую паузу пока они загрузятся и затем, начиная с первой и перескакивая TABом, делал нужные действия на странице. Было очень быстро, т.к. вкладки загружались почти паралельно. И вот я думаю, а возможно ли ускорить парсинг таким же образом? Опыта именно в парсинге нету, а потому и спрашиваю здесь.
...
И еще буду благодарен если кто поможет с этим:
скрытый текст

Выделить код

Код:

VERSION BUILD=8970419 RECORDER=FX
TAB T=1
URL GOTO=https://www.shutterstock.com/ru/search/dog
EVENT TYPE=CLICK SELECTOR="HTML>BODY>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>MAIN>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV>DIV>A" BUTTON=1
EVENT TYPE=CLICK SELECTOR="HTML>BODY>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>MAIN>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(3)>DIV>DIV>A" BUTTON=1
EVENT TYPE=CLICK SELECTOR="HTML>BODY>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>MAIN>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(4)>DIV>DIV>A" BUTTON=1

Не открывается почему-то и выдает ошибку:

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

RuntimeError: Can not locate element specified by selector "HTML>BODY>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>MAIN>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV>DIV>A", line 4 (Error code: -921)

Благодарен за любую помощь. У меня iMacros 8.9.7  Firefox 56, винда 10 home

oleggolk007 пишет

Can not locate element specified by selector

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


oleggolk007 пишет

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

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

InfSub пишет

иной тип записи макроса

А вы (или другой кто) не могли бы помочь (платно) настроить так скрипт, чтобы он открывал в новых вкладках несколько (например пять) первых картинок. Например на странице https://www.shutterstock.com/ru/search/dog. Я уже выдохся и разными типами и браузерами и версиями аймакроса. А очень нужно.

У меня iMacros 8.9.7  Firefox 56, винда 10 home

oleggolk007 пишет

кто поможет с этим:

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

Здравствуйте, после входа в аккаунт на сайте

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


Адреса сайтов и ссылки на сторонние ресурсы, публикуются в тегах noindex под спойлером
Если вы задали вопрос на форуме, не требуется его дублировать в ЛС

Замечание


InfSub

Привет! Подскажите работает ли вообще-то пример скрипта записи файла от нагибалки, который выложен тут


скриншот
yPqicaN.png

У меня этот его пример не работает, выдаёт ошибку.
вот сам код
код тут

Выделить код

Код:

var saveToFile = function (fileName, text) {
	var fileDescriptor = imns.FIO.openNode(fileName);
	imns.FIO.writeTextFile(fileDescriptor, text);
}
 
// Пример использования
saveToFile("C:\\BOTS\\iMacros\\text.txt", "текст для сохранения");

Подскажите в чём причина неработоспособности скрипта? Не хочет он сохранять текст в файл и всё тут :(
Ошибку какую-то вот такую выдаёт

скрин ошибки
EJkeMVM.png

PS версия аймакроса у меня 8.9.7

Здравствуйте.
Подскажите плз.
Надо чтобы управляющий файл, при работе, после выполнения file_9.iim, не переходил к file_10.iim, а с вероятностью 1:100, иногда  запускал file_15.iim.

dosh
js в помощь, если под управляющим файлом подразумевается js, то вы можете создать условие рандомизации выбора, например с помощью генератора случайных числе от 1 до 100 и если результат равен к примеру 100 запускать файл file_15.iim иначе  file_10.iim

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

Герман пишет

PS версия аймакроса у меня 8.9.7

И? какая версия FF?

Герман пишет

C:\\BOTS\\iMacros\\text.txt

такой пусть существует? права на запись в папку есть? файл закрыт или открыт в каком-либо редакторе?

InfSub
Получилось! Благодарочка за подсказку.
PS там полный путь надо, но сам файловый текст не надо создавать, поскольку он сам автоматом создаётся.

Герман пишет

PS там полный путь надо, но сам файловый текст не надо создавать, поскольку он сам автоматом создаётся.

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

Здравствуйте. Раньше писал пару скриптов для своих задач, но помню что по какой-то причине их приходилось запускать на старой версии firefox, на котором в данный момент не получается открыть нужный мне сайт (он подвисает). Можно ли сейчас на актуальной версии firefox запускать скрипты iim и js? Они у меня в файлах, а в firefox сейчас какая-то непонятная демо версия и не понятно, можно ли там подгрузить эти файлы как-то. У меня не получается их добавить туда. Я даже не знаю как это делается в новой версии. В FAQ информация вероятно уже устарела, как сейчас обстоят дела с этим? Не пойму где в новой версии хранятся эти папки с current.iim и Demo-Firefox, чтобы туда закинуть мои скрипты и запустить их

in2fire
пошите на Tampermonkey он нове версии поддерживает

karginaolga пишет

пошите на Tampermonkey он нове версии поддерживает

Вообще не понял что вы написали. Можно подробнее о том, что вы имеете в виду?

Приветствую.
Подскажите команду для сброса настройки в about:config

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

Firefox 52.3.0 (32-bit), imacros 8.9.7

Здравствуйте!
Подскажите, пожалуйста, как можно автоматизировать процесс скачивания изображений, через "Сохранить как"?
Есть ссылки, типа:

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.
ссылки публикуется под спойлером, в тегах noindex
Нужно перейти по ссылке и на изображении нажать "Сохранить как"
Не получается написать рабочий скрипт...
Пытался следующим способом, но он не срабатывает (
скрытый текст

Выделить код

Код:

URL GOTO= https://archival-services.gov.ge/fonds/welcome/aidFiles/82967/0
ONDOWNLOAD FOLDER=C:\Pictures FILE=+{{!NOW:ddmmyyyy}}  WAIT=YES
TAG POS=1 TYPE=IMG ATTR=SRC:4AAQSkZJRgABAQEAyADIAAD/4RDARXhpZgAATU0AKgAAAAgABQES* CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT

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

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


InfSub

Так наверно!

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

Выделить код

Код:

TAG POS=1 TYPE=IMG ATTR=SRC:* CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT

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


InfSub

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


К сожалению всё равно не получается (




InfSub

hleshka пишет

как можно автоматизировать процесс скачивания

У нагибаки разобран способ скачивания через менеджер закачек браузера

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

Азат55555
опишите проблему полнее, не ясна суть проблемы

InfSub пишет

Азат55555
опишите проблему полнее, не ясна суть проблемы

В двух словах, в xml документ закинут html, как мне связать их, чтобы querySelector увидел html, когда я попытался получить css путь к html, то получил только html, скрипт просто html не видит, думаю нужно, связать с xml? И вообще когда я нажал "Исходный код страницы" там показан только xml.

Азат55555 пишет

Отписался в лс.

опишите проблему на форуме, а не в ЛС, вам ответит кто-то из форумчан, скорее всего вам нужно менять настройки через .setAttribute() а не пытаться образно говоря "ткнуть в них мышкой"

скрытый текст
28e9aba7732e.png

У меня возникает время от времени неполадка с макросами и папками аймакроса, они исчезают как на скрине как исправить эту неполадку? Аймакрос 8.9.7. Пробовал: менять папки, в настройках аймакроса (где лежат скрипты и др.) и потом заново возвращать путь к папке, это не помогло.

На сайте - ответы майл, не могу отправить комментарий под комментарий давшему ответ, из-за того, что кнопка - "Комментировать" становится активным, только после ввода текста с клавиатуры. Только в режиме записи event вводит, но через него не хочу, так как не всегда срабатывает, когда много комментариев. Хочется использовать js. Через js вставляет текст, но даже после вставки и клика на поле ввода текста, кнопка "Комментировать" не становится активной.


Либо надо через CTRL+V или чтобы печатал текст через js.
Не получилось это реализовать, сколько не гуглил.
Можно ли это реализовать как нибудь через js без евент?

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

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

Выделить код

Код:

var массив = ["Icarus66","Ruka767","Icarus66","Icarus66","Ruka767","Ruka767","Ruka767",
"Icarus66","Ruka767","Icarus66","Icarus66","Icarus66","Ruka767","Icarus66"]


alert(массив)

Чтобы стало вот так

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

Выделить код

Код:

var массив = ["Icarus66","Ruka767","Icarus66","Ruka767","Icarus66","Ruka767","Icarus66","Ruka767","Icarus66"]

Сам сделал уже)

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

Выделить код

Код:

var массив = ["Icarus66","Ruka767","Icarus66","Icarus66","Ruka767","Ruka767","Ruka767","Icarus66",
"Ruka767","Icarus66","Icarus66","Icarus66","Ruka767","Icarus66"]

var массив2 = []

for(m=0;m<массив.length;m++){
if(массив[m] != массив[m+1]){
массив2.push(массив[m])
}
}

alert(массив2)

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

InfSub

Алим
Делаешь из значения ключ массива в ассоциативном массиве, потом из ассоциативного массива перегоняешь обратно в обычный массив
В твоём решении даже приведенный тобой массив будет с дубликатами после прохождения твоим циклом, там где между одинаковыми значениями есть другое значение, например:
["Icarus66","Ruka767","Icarus66"]

оффтоп
Здравствуйте. Подскажите, а какая сейчас версия FF и imasros наиболее полнЫ функционально

udalov пишет

оффтоп
Здравствуйте. Подскажите, а какая сейчас версия FF и imasros наиболее полнЫ функционально

Всё по старому уже давно!!!

Squatter
Подскажи, есть ли способ общения между браузерами? Без БД, серверов и всего такого.
Допустим передать массив,текст и т.д.

Погугли по тегу "P2P Firefox". Вот, допустим, чат для локалки

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

Squatter пишет

Погугли по тегу "P2P Firefox". Вот, допустим, чат для локалкискрытый текстhttps://addons.mozilla.org/ru/firefox/addon/p2p-chat/

Спасибо, что отозвался!!!
:beer:

здравствуйте.
подскажите, как js поставить скрипт на паузу на заданный интервал, если на странице появилось определенное сообщение "bla-bla-bla"?

del

Как исправить баг аймакроса насчёт остановки скрипта, вот нажал я на кнопку стоп, а аймакрос не останавливается. В настройках imacros показ js включён.

Del

Здравствуйте! Ребята, подскажите пожалуйста как записать аймакрос так, чтоб было нажатие на выбор страны на сайте Алиэкспресс.

скриншот
zimWrfK.png

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

Вот что написано в коде страницы на элемент который надо нажимать

скрытый текст
neGDhgS.png

Там среди прочего есть javascript:void(0), думаю это связано и надо это как-то учитывать. Иначе список стран не выпадает. Хоть применял разные команды нажатия; и через EVENT и другие:
4 способа нажатия

Выделить код

Код:

TAG POS=1 TYPE=div ATTR=class:ng-item-wrap<SP>ng-item<SP>ng-switcher
TAG POS=1 TYPE=div ATTR=data-role:region-pannel
TAG POS=1 TYPE=A ATTR=ID:switcher-info
EVENT TYPE=CLICK SELECTOR="#switcher-info" BUTTON=0


И они все рабочие, но при этом список всё равно не раскрывается.

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

надо чтоб список вот так раскрывался
27Q5JMW.png

Есть предположение, что тут надо применять функцию имитации мыши с помощью js скрипта. Функцию такую я нашёл, но как конкретно её применять, подскажите пожалуйста

Функция имитации мыши

Выделить код

Код:

/***-= Функция имитации мыши =-***/
function triggerMouseEvent (node, eventType) {
    var clickEvent = window.document.createEvent ('MouseEvents');
    clickEvent.initEvent (eventType, true, true);
    node.dispatchEvent (clickEvent);
}

Попробуй так

Выделить код

Код:

TAG POS=1 TYPE=A ATTR=HREF:javascript:void(0)
WAIT SECONDS=1
TAG POS=1 TYPE=A ATTR=DATA-ROLE:country
WAIT SECONDS=1
TAG POS=1 TYPE=li ATTR=data-name:"Belarus" 

'TAG POS=1 TYPE=li ATTR=data-code:"by"

PRESIDENT пишет

Попробуй так

Выделить код

Код:

TAG POS=1 TYPE=A ATTR=HREF:javascript:void(0)
WAIT SECONDS=1
TAG POS=1 TYPE=A ATTR=DATA-ROLE:country
WAIT SECONDS=1
TAG POS=1 TYPE=li ATTR=data-name:"Belarus" 

'TAG POS=1 TYPE=li ATTR=data-code:"by"

Попробовал, не получается все равно, не раскрывается выпадающий список. Однако есть такой нюанс (он и раньше был), когда работает скрипт, когда страница почти загрузилась и в этот момент нажать в ручную мышью куда нибудь на страницу (только не на ссылку, чтоб по ней не перейти), то после этого, когда страница загрузится и далее скрипт нажимает на список выпадающих стран, то этот список выпадает и страны открываются, можно их выбирать. Но если вручную мышью не клацать, то список стран так и не открывается чисто скриптом.
То есть тут я так понимаю это связано с работой ява-скриптов которые в самом исходном коде страницы сайта алиэкспресс. Конкретно с вот этим HREF:javascript:void(0). Вот у тебя он в самой первой строке прописан и я когда сразу увидал твой код, то с радостью подумал, что ну вот это должно сработать, тем более учитывая твои знания и опыт в ява-скриптах и то сколько много полезного, дельного и толкового ты давал на этом форуме. Но всё равно огромное спасибо! Попробую ещё пошаманить с самой первой строкой, что у тебя в коде, может надо её как то иначе записать. Буду пробовать)

Как сделать такой цикл на js ?

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

Выделить код

Код:

// Первый цикл +1 = TAG POS=1
// Второй цикл +2 = TAG POS=3
// Третий цикл +3 = TAG POS=6
// Четвёртый цикл +4 = TAG POS=10

Сделал. Оставлю здесь.
Может кому-то понадобится.

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

Выделить код

Код:

var loop = 1
var myArray = []
for(i=0;i<100;i++){
myArray.push(loop)
var myCycle = myArray.map(y=>x+=y, x=0).reverse()[0]
alert(myCycle)
loop++
}

исправлено

Не совсем то, что я хотел. Всё ровно нужна помощь.
Если мне надо начать с 33, то нужно чтобы было так

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

Выделить код

Код:

// Первый цикл TAG POS=33
// +1
// Второй цикл TAG POS=34
// +2
// Третий цикл TAG POS=36
// +3
// Четвёртый цикл TAG POS=39

не подавайте дурной пример, не используйте русские наименования переменных при кодинге, не превращайте JS в недоязык программирования от 1С

InfSub

Вот этот код в принципе рабочий

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

Выделить код

Код:

TAG POS=1 TYPE=A ATTR=HREF:javascript:void(0)


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

Denzar Что вы голову ломаете? Эти параметры записываются в сессионную куку с именем aep_usuc_f


Запись своего значения в куку по имени или по домену, как угодно, делается так

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

Выделить код

Код:

var { Services } = Components.utils.import("resource://gre/modules/Services.jsm");
Services.cookies.add(".aliexpress.ru", "/", "aep_usuc_f", "b_locale=es_ES&c_tp=RSD&city=917477776580000000&province=917477770000000000&region=RU&site=rus", false, false, true, Date.now());

всё что в кавычках начиная со слова b_locale заменить на свои значения



Алим

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

Выделить код

Код:

var n = 0;
for (var i = 33; i < 40 ; i += n) {
  n++;
  console.log(i);
}

Squatter Спасибо огромное! Всё получилось! Работает как надо!

PS Не. Всё равно не так как надо. Приходится всё равно открывать выпадающий список стран и нажимать там кнопку SAVE. И когда страница после этого перезагрузится, то купон становится таким номиналом какой есть на самом деле. Поэтому тут мне всё же желательнее было бы такой код в ява-скрипте, который бы нажимал так, чтоб выпадающее окно со списком стран всё таки выпадало. Но как это сделать... непонятно :(

Squatter Работает, благодарю!

А может стоит применить функцию имитации мыши? Есть такая, нашёл в интернете.

Функция имитации мыши

Выделить код

Код:

/***-= Функция имитации мыши =-***/
function triggerMouseEvent (node, eventType) {
    var clickEvent = window.document.createEvent ('MouseEvents');
    clickEvent.initEvent (eventType, true, true);
    node.dispatchEvent (clickEvent);
}


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

Denzar

Да куда ты лезешь, JS это для уровня/модуса бога, тебе такое рановато.

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

скрытый текст
Посмотри код элемента
там будет что то вроде этого
<a id="switcher-info" data-role="menu" class="switcher-info notranslate" rel="nofollow" href="javascript:void(0)" data-spm-anchor-id="a2g0o.home.1000001.12">

потом сюда подставь нужный тип и атрибут TYPE=...  ATTR=...

это всё команды для одного и того же элемента

TAG POS=1 TYPE=A ATTR=id:"switcher-info"
или так
TAG POS=1 TYPE=A ATTR=data-role:"menu"
или так
TAG POS=1 TYPE=A ATTR=class:"switcher-info notranslate"
или так
TAG POS=1 TYPE=A ATTR=HREF:javascript:void(0)

обрати внимание что знак ( = ) заменяется на ( : ) двоеточие

если на сайте несколько элементов с похожими атрибутами то
можешь комбинировать их с помощью знака &&
TAG POS=1 TYPE=A ATTR=data-role:"menu"&&HREF:javascript:void(0)

Я не знаю чем тебе этот код не угодил
у меня всё прекрасно отрабатывает

Выделить код

Код:

TAG POS=1 TYPE=A ATTR=HREF:javascript:void(0)
WAIT SECONDS=1
TAG POS=1 TYPE=A ATTR=DATA-ROLE:country
WAIT SECONDS=1
TAG POS=1 TYPE=li ATTR=data-name:"Belarus" 
WAIT SECONDS=2
'TAG POS=1 TYPE=BUTTON ATTR=TYPE:button

Если его один раз запускаешь окно выбора открывается
а если ещё раз запустить, то это окно закроется, но страну всё равно выберет.

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

Модер не надо этот пост править.
В тегах code не работают другие теги, и нельзя цвета и/или шрифт выделить

PRESIDENT пишет

Я не знаю чем тебе этот код не угодил
у меня всё прекрасно отрабатывает

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


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


PS видео лучше скачать и глядеть на компе в оригинале. На яндекс-диске оно воспроизводится не очень качественно.


PPS попробуй пожалуйста воспроизвести у себя этот код. Там всего лишь добавлена команда CLEAR и ссылка на сайт Али по которой надо переходить.
 
PPPS команда CLEAR в начале кода обязательна!

Выделить код

Код:

CLEAR
URL GOTO=https://www.aliexpress.com/item/4001297334567.html
TAG POS=1 TYPE=A ATTR=HREF:javascript:void(0)
WAIT SECONDS=1
TAG POS=1 TYPE=A ATTR=DATA-ROLE:country
WAIT SECONDS=1
TAG POS=1 TYPE=li ATTR=data-name:"Belarus" 
WAIT SECONDS=2
TAG POS=1 TYPE=BUTTON ATTR=TYPE:button
PRESIDENT пишет

Если его один раз запускаешь окно выбора открывается

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


код загружающий страницу сайта в новой вкладке браузера

Выделить код

Код:

TAB CLOSEALLOTHERS
TAB OPEN
TAB T=2
TAB T=1
TAB CLOSE
WAIT SECONDS=2
CLEAR
URL GOTO=https://www.aliexpress.com/item/4001297334567.html
TAG POS=1 TYPE=A ATTR=HREF:javascript:void(0)
WAIT SECONDS=1
TAG POS=1 TYPE=A ATTR=DATA-ROLE:country
WAIT SECONDS=1
TAG POS=1 TYPE=li ATTR=data-name:"Belarus" 
WAIT SECONDS=2
TAG POS=1 TYPE=BUTTON ATTR=TYPE:button


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

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

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

Выделить код

Код:

SET !REPLAYSPEED MEDIUM
SET !ERRORIGNORE YES
SET !ERRORCONTINUE YES
SET !EXTRACT_TEST_POPUP NO
SET !DATASOURCE C:\gruppy.txt
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
URL GOTO={{!COL1}}
SET !DATASOURCE C:\tekst.csv
SET !DATASOURCE_LINE {{!LOOP}}
WAIT SECONDS=2
EVENT TYPE=CLICK SELECTOR="#ng-app>BODY>DIV>DIV:nth-of-type(2)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(3)>DIV>DIV:nth-of-type(3)>DIV:nth-of-type(2)>DIV>DIV>DIV>FORM>DIV:nth-of-type(2)>DIV:nth-of-type(5)" BUTTON=0

dmitriy8720

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

Выделить код

Код:

SET !LOOP 1
SET !REPLAYSPEED MEDIUM
SET !ERRORIGNORE YES
SET !DATASOURCE C:\gruppy.txt
SET !DATASOURCE_LINE {{!LOOP}}
URL GOTO={{!COL1}}
SET !DATASOURCE C:\tekst.csv
SET !DATASOURCE_LINE {{!LOOP}}
SET !EXTRACT {{!COL1}}
WAIT SECONDS=2
TAG POS=1 TYPE=* ATTR=* CONTENT={{!EXTRACT}}

Алим пишет

dmitriy8720

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

Выделить код

Код:

SET !LOOP 1
SET !REPLAYSPEED MEDIUM
SET !ERRORIGNORE YES
SET !DATASOURCE C:\gruppy.txt
SET !DATASOURCE_LINE {{!LOOP}}
URL GOTO={{!COL1}}
SET !DATASOURCE C:\tekst.csv
SET !DATASOURCE_LINE {{!LOOP}}
SET !EXTRACT {{!COL1}}
WAIT SECONDS=2
TAG POS=1 TYPE=* ATTR=* CONTENT={{!EXTRACT}}


Не помогло, все по прежнему, из файла текст не публикует.

Работает только так, но публикует, только первую строку, а строк больше 30, в файле.

EVENTS TYPE=KEYPRESS SELECTOR="#post_textarea" CHARS="{{!COL1}}"

dmitriy8720 пишет

Работает только так, но публикует, только первую строку, а строк больше 30, в файле.

EVENTS TYPE=KEYPRESS SELECTOR="#post_textarea" CHARS="{{!COL1}}"

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

Выделить код

Код:

SET !VAR6 EVAL("var randomName=Math.floor(Math.random()*2267 + 1); randomName;")
SET !DATASOURCE baza-koment.txt
SET !DATASOURCE_LINE {{!VAR6}}
ADD !EXTRACT {{!COL1}}
SET !VAR7 {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=1 TYPE=TEXTAREA FORM=ID:acform ATTR=ID:message CONTENT={{!VAR7}}

Текст в файле должен быть в “” и в тексте не должно быть “” и файл должен читаться построчно, к примеру, если в вашем файле 30 строк, то там, куда вы его положите он должен растянутся в одну строку и так считываться я использую Bred3 постинг идет, как надо за исключением, если сам ресурс ограничивает количество символов при комментировании.

googlenoob]
Спасибо, все идеально работает, а как теперь удалить двойную кавычку, в начале первой строки и в конце 47 строки?

dmitriy8720 пишет

Спасибо, все идеально работает, а как теперь удаль двойную кавычку, в начале первой строки и в конце 47 строки?

Вы в своем тексте меняйте, на что то другое или просто заменяете кавычки, к примеру, на – здесь текст – или вроде можно заменить на одинарные в тексте ‘ здесь текст, что должен быть в кавычках ’  я у себя удалял строки, что выдавали ошибку то бишь не выводился текст полностью или менял текст на корректный.

googlenoob пишет

dmitriy8720 пишетСпасибо, все идеально работает, а как теперь удаль двойную кавычку, в начале первой строки и в конце 47 строки?Вы в своем тексте меняйте, на что то другое или просто заменяете кавычки, к примеру, на – здесь текст – или вроде можно заменить на одинарные в тексте ‘ здесь текст, что должен быть в кавычках ’  я у себя удалял строки, что выдавали ошибку то бишь не выводился текст полностью или менял текст на корректный.

Можно ли, как то ограничить, видимые строки при публикации? например, чтобы в первой строке была двойная кавычка и в последней, но чтобы публиковал со 2-46 строку.

В одной соц.сети, этот код работает

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

Выделить код

Код:

EVENTS TYPE=KEYPRESS SELECTOR="#тут я меняю код" CHARS="{{!COL1}}"

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

А вот, этот код, везде работает

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

Выделить код

Код:

EVENTS TYPE=KEYPRESS SELECTOR=* CHARS="v" MODIFIERS="ctrl"

но я хочу, чтобы из файла брал текст, а не из буфера.

Добрый день! Может кто подскажет как из извлечённого !EXTRACT взять только целое число:

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

Выделить код

Код:

TAG POS=1 TYPE=A ATTR=TXT:* extract=txt
SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\";")
PROMPT {{!VAR1}}

заранее спасибо!

Все понял, отстал, сам справился:

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

Выделить код

Код:

TAG POS=1 TYPE=A ATTR=TXT:* extract=txt
SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\"; s=s.replace(/\\D/g,\"\"); s=parseInt(s);")
PROMPT {{!VAR1}}

Здравствуйте! Подскажите как вырезать всё лишнее которое сохраняется с помощью этого кода:

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

Выделить код

Код:

var iP=iimPlayCode, f1='FRAME NAME=ifmail;

    iP(f1+'TAG POS=1 TYPE=STRONG ATTR=TXT:Please<SP>enter<SP>the<SP>following<SP>code<SP>* EXTRACT=TXT'); a=iimGetLastExtract(); 
alert(+a);


Сохраняет вот что:
скрытый текст
BMb6XHj.png

а надо чтоб всё удалило и оставило только число (495212). Какую команду для вырезания лишнего надо применять вместе с iimGetLastExtract(), подскажите пожалуйста.

Denzar

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

Выделить код

Код:

a=iimGetLastExtract().match(/\d+/);

InfSub

Ух ты! Классно! Работает! Спасибо большое!
Я и сам уже так и этак пробовал, нашёл на сайте регулярные выражения, вот тут:

скрытый текст
VUXjHwG.png
но что-то так и не получалось самому разобраться. То есть я там пробовал применять большую D, а надо было маленькую d.
В общем оказывается вон как надо было. Спасибо!

Подскажите пожалуйста как сохранять в файл так, чтоб каждый раз новое содержимое переписывало старое? Например этот код сохраняет всё с новой строки

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=DD ATTR=TXT:* EXTRACT=TXT\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=numer.txt');


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

На сайте Нагибаки нашёл вроде то, что надо

скрытый текст
r3NrWSF.png

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

Denzar
да это лучший вариант, хотя можно и имакросом удалить файл а потом сохранить новый

26-01-2022 23:17:17

Denzar пишет

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

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

Приветствую тех немногих, кто ещё тут бывает.:)

Я тут молодость вспомнил,  хочу одну задачу с помощью имакроса решить.
Но вот проблема скрипт тупо виснет.
Виснет при использовании функции мд5.

Подскажите нормальную версию имакроса (и где скачать)

Тестил на мазиле 55.0.2 и 56.0.2
имакрос 8.9.7

PRESIDENT
8.9.7 самая нормальная
а вот работает корректно она только в относительно старых версиях ФФ, впрочем про md5 не скажу не пробовал, но ни кто не мешает выполнить подсчет md5 например через cmd (хотя конечно смотря что делать)

InfSub
Да, спасибо.
Но я уже на питоне всё решил.

PRESIDENT пишет

Приветствую тех немногих, кто ещё тут бывает.

Приветствую! Я как раз один из тех кто тут ещё бывает. Столкнулся с казалось бы простой, но в то же время непонятной задачей: на сайте при вводе пароля приходится использовать для записи скрипта режим EVENT (потому что при обычном способе записи/ввода пароля оно не срабатывает). Ну да это ладно, EVENT так EVENT. Но прикол в том, что даже при использовании команды EVENT пароль по нормальному срабатывает только когда браузер развёрнут. А если браузер свернуть, то тогда при работе скрипта при вводе пароля и нажатии ввод оно пишет "некорректный пароль". Приходится постоянно держать браузер открытым (развёрнутым), тогда всё норм работает. Но это оооочень неудобно. Вот как это побороть? непонятно

Denzar пишет
PRESIDENT пишет

Приветствую тех немногих, кто ещё тут бывает.

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

могу предположить, что макрос записан с использованием инструкций EVENT TYPE=MOUSE... POINT
вот так

Выделить код

Код:

EVENT TYPE=MOUSEMOVE SELECTOR="#containment" POINT="(204,257)"

их надо переписать, используя XPATH

Выделить код

Код:

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

Здравствуйте! Помогите пожалуйста подкорректировать команду извлекающую код из текста.

Вот такой текст
ZYWDIxb.png

Нужен только код подтверждения. Но при использовании  команды q=iimGetExtract().match(/\d+/g).join(''); оно все числа из текста извлекает, получается так:

скрытый текст
PiDwcUR.png

А надо извлечь только последние 6 чисел, которые и есть код.
Как можно это решить, подскажите пожалуйста?

Если использовать такой код,

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=DIV ATTR=TXT:СМС<SP>от:<SP>YahooДата<SP>СМС:* EXTRACT=TXT'); q=iimGetLastExtract().match(/\d+/g); 
iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=NAME:qrf ATTR=NAME:body CONTENT='+q);


то выдаст числа с запятыми
скрытый текст
njsFSHG.png

код здесь из себя представляет последнее 5-тизначное число, оно-то и надо. Но как его извлечь отдельно?

Denzar пишет

Если использовать такой код,

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=DIV ATTR=TXT:СМС<SP>от:<SP>YahooДата<SP>СМС:* EXTRACT=TXT'); q=iimGetLastExtract().match(/\d+/g); 
iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=NAME:qrf ATTR=NAME:body CONTENT='+q);


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

код здесь из себя представляет последнее 5-тизначное число, оно-то и надо. Но как его извлечь отдельно?

Нашёл решение как извлечь отдельно. Это делается с помощью квантификаторов. Примерно так:

Выделить код

Код:

alert( "25,2022,10,17,02,78644".match(/\d{5}/) );

Но теперь осталась загвоздка как числа в кавычках заменить на переменную q

почти готовый код

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=DIV ATTR=TXT:СМС<SP>от:<SP>YahooKДата<SP>СМС:* EXTRACT=TXT'); q=iimGetLastExtract().match(/\d+/g); 
iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=NAME:qrf ATTR=NAME:body CONTENT='+q); 
alert( "25,2022,10,17,02,78644".match(/\d{5}/) );


Подскажите как числа что в кавычках "25,2022,10,17,02,78644" заменить на переменную?

25-07-2022 15:24:30
Хотя лучше всего было бы чтоб один код сделать из двух этих:

Выделить код

Код:

1) iimGetLastExtract().match(/\d+/g); 
2) iimGetLastExtract().match(/\d{5}/);

Подскажите как их объединить в один (если так можно)?

Хочу спарсить данные в формате json, но вот не задача - history подсвечивается голобум цветом.
history является DOM-объектом Window и поэтому выдаёт ошибку. Как в таком случае быть?

скрытый текст
2022-08-03-195706.jpg

window.console.log(JSON.parse(b.response));
Глянь в консоли , что вернёт?

del

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

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

Выделить код

Код:

for(i=1; i<=100; i++){ 
   iimPlayCode('URL GOTO=https://forum.mozilla-russia.org/'); 
 f=iimPlayCode('TAG POS=1 TYPE=SPAN ATTR=TXT:Полезная<SP>информация'); if(f>0) 
 // тут должен быть счётчик для данной фразы //
  break; 
 }


То есть надо так сделать, чтоб только после 3-х раз появления на странице фразы "Полезная информация" срабатывала команда break

31-08-2022 12:59:08
Или может это неправильное направление? Подскажите, может есть вариант проще и лучше, чтоб остановить цикл скрипта при условии если за время работы будет найдена определенная фраза заданное количество раз?

Denzar

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

Выделить код

Код:

for(i=1;i<=100;i++){

iimPlayCode('URL GOTO=https://forum.mozilla-russia.org/');

var y = 0
for(;;){
if(iimPlayCode('SET !TIMEOUT_STEP 1\nTAG POS=1 TYPE=SPAN ATTR=TXT:Полезная<SP>информация')>0){
if(3 == y){
y++
break
}
}
iimPlayCode('WAIT SECONDS=1')
}

}

В одноклассниках, в группе, открываю пост и хочу его отредактировать и не получается вывести меню с надписью - Редактировать
Все режимы записи перепробывал и не выходит.

скрытый текст
2022-09-17-161317.jpg

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

Алим пишет

Denzar

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

Выделить код

Код:

for(i=1;i<=100;i++){

iimPlayCode('URL GOTO=https://forum.mozilla-russia.org/');

var y = 0
for(;;){
if(iimPlayCode('SET !TIMEOUT_STEP 1\nTAG POS=1 TYPE=SPAN ATTR=TXT:Полезная<SP>информация')>0){
if(3 == y){
y++
break
}
}
iimPlayCode('WAIT SECONDS=1')
}

}

А как этот скрипт работает? Он же не останавливается после 3 раз считывания искомой фразы. Что-то я вообще не понял что это за скрипт получился. Он точно правильный?:/

Denzar

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

Выделить код

Код:

for(i=1;i<=100;i++){

iimPlayCode('URL GOTO=https://forum.mozilla-russia.org/');

var y = 0
for(;;){
if(iimPlayCode('SET !TIMEOUT_STEP 1\nTAG POS=1 TYPE=SPAN ATTR=TXT:Полезная<SP>информация')>0){
y++
if(3 == y){break}
}
iimPlayCode('WAIT SECONDS=1')
}

}

Исправил. Человеческий фактор.

Алим
условия для переменной "y" пишутся в параметрах цикла for(y = 0; y <= 3; y++){}
иначе используется while(true){}

Всем доброго времени суток! Подскажите, пожалуйста, imacros 8.9.7 на какой новой версии ФФ будет нормально работать, со всеми функциями и командами? У меня сейчас Mozilla Firefox 56.0.2 , но почему-то часть функционала Вконтакта и других некоторых сайтов не работает...

udalov пишет

Всем доброго времени суток! imacros 8.9.7 на какой новой версии ФФ будет нормально работать, со всеми функциями и командами? У меня сейчас Mozilla Firefox 56.0.2 .

Эта последняя на которой работает данная верия Imacros.Но лично сам использую 55.0.3

Алим пишет

Denzar

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

Выделить код

Код:

for(i=1;i<=100;i++){

iimPlayCode('URL GOTO=https://forum.mozilla-russia.org/');

var y = 0
for(;;){
if(iimPlayCode('SET !TIMEOUT_STEP 1\nTAG POS=1 TYPE=SPAN ATTR=TXT:Полезная<SP>информация')>0){
y++
if(3 == y){break}
}
iimPlayCode('WAIT SECONDS=1')
}

}

Исправил. Человеческий фактор.

Так а всё равно ж ничего не изменилось. Как не работало, так и не работает.
Вы его хоть проверяли на работоспособность или так написали и выложили? )))

Denzar
Скрипт три раза проверяет текст на совпадение и если три раза воспало, то прирывает цикл.
Как он у вас работает?

Как сделать наведение мышки через js на imacros ?

На сайте одноклассников в группе в разделе участников, если навести курсор мыши на аватарку участника, то всплывает меню в котором находяться действия - пригласить в группу и т.д. Раньше с помощью команды imacros - CONTENT=EVENT:MOUSEOVER без js всё работало, а сейчас нет.

скрытый текст
a01a3925a47ccdff2033b1e457cf2dfd.jpg?md5=IkDH2ikFHx5vEmsiMzuleA&expires=1668517200

Алим пишет

Как сделать наведение мышки через js на imacros ?

На сайте одноклассников в группе в разделе участников, если навести курсор мыши на аватарку участника, то всплывает меню в котором находяться действия - пригласить в группу и т.д. Раньше с помощью команды imacros - CONTENT=EVENT:MOUSEOVER без js всё работало, а сейчас нет.

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

Выделить код

Код:

window.document.getElementsByClassName('user-grid-card_img')[1].dispatchEvent(new window.Event('mouseenter'));

JamesGoodwin
Благодарю, всё работает +1 в карму. Выручил!

Алим пишет

Denzar
Скрипт три раза проверяет текст на совпадение и если три раза воспало, то прирывает цикл.
Как он у вас работает?

Он продолжает гнать 100 раз без остановки. После 3-х раз ничего не прерывается.

25-11-2022 17:06:15
Явно этот счётчик кривой. Ведь даже InfSub обратил на это внимание, вот его цитата:

InfSub пишет

Алимусловия для переменной "y" пишутся в параметрах цикла for(y = 0; y <= 3; y++){}иначе используется while(true){}

Не получается выбрать элемент по названию из выподающего списка.
Что я делаю:
1. Извлекаю html код выподающего списка
2. Делаю поиск match() по названию элемента
3. Отсеиваю лишнее и нахожу код соответсвующий названию элемента

Подставляю переменную в math() через RegExp(), но мне нужно найти 5 сиволов ..... до данного элемента (в котором и будет код элемента - цифры).
Вот, как это сделать? Поискал в интернете не нашёл.

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

Выделить код

Код:

var rubrika = "Авто"
var pattern = new RegExp(rubrika)
alert(window.document.querySelector("#subselect_1").innerHTML.match('.....'+pattern, 'i'))

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

регистрироваться ничего не надо
нажимаем на - Рубрикатор и дополнительная информация   

AFIFjeGShPk.jpg?size=1009x859&quality=95&sign=f65841d98b6c4771d3f830783ac571d1&type=album

------

Тким образом я могу сделать через js и он работает, но тогда название элемента - Авто, я уже не могу подставить в match() в виде переменной

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

Выделить код

Код:

var код = window.document.querySelector("#subselect_1").innerHTML
.match(/.....Авто/ig).toString().match(/\d+/ig)

alert(код)

iimPlayCode('TAG POS=1 TYPE=SELECT ATTR=NAME:rub CONTENT=%'+код+'')

------
Сделал сам, работает.
Может код будет кому-то полезен, оставлю здесь.

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

Выделить код

Код:

var рубрика = "Авто"

iimPlayCode("TAG POS=1 TYPE=SELECT ATTR=NAME:rub EXTRACT=TXTALL");
var total = iimGetExtract().split("[OPTION]")

for(i=0;i<total.length;i++){
var код = window.document.querySelector("#subselect_1").innerHTML.split("value")[i+1]
if(код.match(RegExp(рубрика,'i'))){
var код = код.match(/\d+/).toString()
break
}
}

iimPlayCode('TAG POS=1 TYPE=SELECT ATTR=NAME:rub CONTENT=%'+код+'')

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

Алим пишет

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

скрытый текст
var rubrika = "Авто"
var pattern = new RegExp('.....'+rubrika)
var код = window.document.querySelector("#subselect_1").innerHTML.match(pattern, 'i').toString().match(/\d+/ig)
iimPlayCode('TAG POS=1 TYPE=SELECT ATTR=NAME:rub CONTENT=%'+код+'')

JamesGoodwin
Интересно, спасибо за решение!

Здравствуйте! Люди, подскажите пожалуйста какую команду надо применить чтоб извлечь из текста пароль буквенно-числовой?

Вот такой текст

Выделить код

Код:

Входящее - wildexpress (Контакт не определен)
Текст сообщения: j9gu5 (04.12.22 20:57)

Извлекать тут надо j9gu5 .
Вот так выглядит:

скрытый текст
GEEZnun.png

Что здесь лучше применить? Ведь тут и числа и буквы в одном пароле. Команда типа iimGetLastExtract().match(/\d+/g);  не годится, тут надо что-то иное. Но что конкретно, подскажите, кто в теме.

Denzar пишет

Здравствуйте! Люди, подскажите пожалуйста какую команду надо применить чтоб извлечь из текста пароль буквенно-числовой?

Вот такой текст

Выделить код

Код:

Входящее - wildexpress (Контакт не определен)
Текст сообщения: j9gu5 (04.12.22 20:57)

Извлекать тут надо j9gu5 .
Вот так выглядит:

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

Что здесь лучше применить? Ведь тут и числа и буквы в одном пароле. Команда типа iimGetLastExtract().match(/\d+/g);  не годится, тут надо что-то иное. Но что конкретно, подскажите, кто в теме.

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

Выделить код

Код:

iimGetLastExtract().match(/(?=.*?[a-zA-Z])(?=.*?\d)[a-zA-Z\d]+/);

JamesGoodwin пишет
Выделить код

Код:

iimGetLastExtract().match(/(?=.*?[a-zA-Z])(?=.*?\d)[a-zA-Z\d]+/);

Ух как тут наворочено! Спасибо, что откликнулись! Эх, если б этот код ещё и то, что надо извлекал... Но увы, он извлекает не пароль, а второе слово по счёту - wildexpress :(

Denzar пишет
JamesGoodwin пишет
Выделить код

Код:

iimGetLastExtract().match(/(?=.*?[a-zA-Z])(?=.*?\d)[a-zA-Z\d]+/);

Ух как тут наворочено! Спасибо, что откликнулись! Эх, если б этот код ещё и то, что надо извлекал... Но увы, он извлекает не пароль, а второе слово по счёту - wildexpress :(

скрытый текст
22a7d6c9f3378ac1a65b0c09968a196d.jpg

JamesGoodwin пишет
Denzar пишет
JamesGoodwin пишет
Выделить код

Код:

iimGetLastExtract().match(/(?=.*?[a-zA-Z])(?=.*?\d)[a-zA-Z\d]+/);

Ух как тут наворочено! Спасибо, что откликнулись! Эх, если б этот код ещё и то, что надо извлекал... Но увы, он извлекает не пароль, а второе слово по счёту - wildexpress :(

А что это за сайт/ресурс? Это конструктор регулярных выражений? А как им пользоваться? Может у меня получилось бы, если б знал как им пользоваться. А так-то это регулярное выражение, что вы прислали, не работает. Точнее удаляет лишнее вместе с паролем, оставляя только слово wildexpress. Так что тут надо дальше думать (мне) как правильно сделать/написать регулярное выражение, чтоб удаляло всё лишнее кроме пароля.

Denzar пишет

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

скрытый текст
e2e6134156945f1386eb5fff1ceb2f34.jpg

JamesGoodwin пишет
Denzar пишет

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

Что это? Хоть бы текст какой написали. Нифига не понятно.
Если получится, запишу видео, где наглядно и чётко видно как это регулярное выражение, что вы написали, извлекает из текста вместо пароля слово wildexpress.

Denzar пишет

Здравствуйте! Люди, подскажите пожалуйста какую команду надо применить чтоб извлечь из текста пароль буквенно-числовой?

Вот такой текст

Выделить код

Код:

Входящее - wildexpress (Контакт не определен)
Текст сообщения: j9gu5 (04.12.22 20:57)

Извлекать тут надо j9gu5 .
Вот так выглядит:

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

Что здесь лучше применить? Ведь тут и числа и буквы в одном пароле. Команда типа iimGetLastExtract().match(/\d+/g);  не годится, тут надо что-то иное. Но что конкретно, подскажите, кто в теме.

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

Алим пишет

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

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

PS а вот со счетчиком циклов, который бы останавливался после определенного количества искомых фраз, пока затык. То что вы написали выше, так и не работает.

Добрый день.
Подскажите как переобразовать этот js в iim

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

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=DIV ATTR=* EXTRACT=HTM');	
id_chars=iimGetLastExtract().split('jx-tokenizer" id="')[1].split('">')[0]
id_chars=id_chars.match(/^[\w_]+/)

Стесняюсь спросить, форум живой?

У тебя и так iim. Та и зачем он тебе нужен? js более гибкий и удобный.

dim222 пишет

У тебя и так iim. Та и зачем он тебе нужен? js более гибкий и удобный.

А как его запустить в iim файле?
Я с огромной радостью хочу перейти на js но в последней версии мазилы макрос не поддерживает js поэтому приходится с этим геморром возиться.

Зачем ты используешь imacros со свежими версиями лисы?
Крайняя версия с которой комфортно можно работать imacros-ом - это 56. Всё....дальше нет смысла.

dim222 пишет

Зачем ты используешь imacros со свежими версиями лисы?
Крайняя версия с которой комфортно можно работать imacros-ом - это 56. Всё....дальше нет смысла.

Мне нужно в телеге работать,а в старых версиях лисы телега не открывается, просто белый экран.

Как можно зациклить этот код что бы крутился 1000 раз?
В имакросе цикл максимум 100 а хочется больше.

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

Выделить код

Код:

TAG POS={{!loop}} TYPE=SPAN ATTR=TXT:*
WAIT SECONDS=1
TAG POS=1 TYPE=I ATTR=CLASS:icon-add-user
TAG POS=1 TYPE=LABEL ATTR=TXT:Показать*
TAG POS=4 TYPE=INPUT:CHECKBOX ATTR=* CONTENT=NO
TAG POS=1 TYPE=BUTTON ATTR=TXT:Готово
TAG POS=1 TYPE=BUTTON ATTR=TYPE:button&&CLASS:Button<SP>smaller<SP>translucent<SP>round&&ARIA-LABEL:Назад&&TITLE:Назад

Gergi
palemoon 32.1 и imacros работает и телега открывается

karginaolga пишет

Gergi
palemoon 32.1 и imacros работает и телега открывается

Спасибо бро, реально помог)
Если можешь подскажи как в этом коде сделать чтобы внутренний цикл включался через каждые 10 действий общего цикла.

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

Выделить код

Код:

// Общий цикл
for(k15r=1;k15r<=300;k15r++){
// Внутрений цикл
for(k14r=1;k14r<=k15r;k14r++){ 
iimPlayCode('WAIT SECONDS=2');
} 
iimPlayCode('WAIT SECONDS=3');
}

Подскажите что не так в этом коде,пишет ошибка в 9й строке

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

Выделить код

Код:

VERSION BUILD=1011 RECORDER=CR
SET !ERRORIGNORE YES
SET !ERRORCONTINUE YES
SET !DATASOURCE C:\1\111.txt
SET !DATASOURCE_COLUMNS 1
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
TAB T=1
URL GOTO={{!COL1}}

Gergi
запишитесь на курсы. там вас всему обучат

Gergi
Вам давно пора на js перейти а вы всё макросы пишите.
Кстати приветствую тебя karginaolga! Как дела? Чем занимаешься?

В свежих версиях imacros (выше 8.9.7) нельзя извлечь строку из файла?

bop101 пишет

В свежих версиях imacros (выше 8.9.7) нельзя извлечь строку из файла?

Можно.

bop101 пишет

В свежих версиях imacros (выше 8.9.7) нельзя извлечь строку из файла?

нельзя в 10 версиях, без платного апдейта. В версиях свежее 8.9.7 урезали поддержку JS.

13-10-2023 00:00:56

Gergi пишет

Подскажите что не так в этом коде,пишет ошибка в 9й строке

версии 10+, в бесплатном варианте,  работу с файловой системой не поддерживают, о чём система и сообщает.

Здравствуйте! Подскажите как с помощью регулярных выражений извлечь число которое идёт первым? Оно может быть от 5 чисел до 7. То есть из текста с числами я извлекаю примерно такую комбинацию чисел с помощью регулярного выражения

iimGetLastExtract().match(/\d+/g);

и получается следующее:

483279,4,2411,2,0,14,2024,01,15,20,21,43,15,01,24,8,21

Теперь надо как-то взять первое число 483279, оно в данном случае из 6-ти чисел. Но может быть и из 5-ти и из 7-ми. Подскажите каким регулярным выражением лучше всего извлекать в данном случае?

15-01-2024 21:03:44
Уже сам разобрался. С помощью квантификатора.  Для того, чтобы найти числа от 5 до 7 цифр, мы можем указать границы в фигурных скобках: \d{5,7}

Denzar пишет

надо как-то взять первое число

вы получаете массив с данными, если вопрос именно о первом блоке чисел, а не о первом вхождении из 5-7 чисел, то можно обратиться к нулевому элементу массива

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

Выделить код

Код:

var str = 'ere1r44r2f3r4r557 r45vv5v 5 6 5cgf8989';
var result = str.match(/\d+/g);
alert(result[0]);