Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 01-06-2016 14:50:33

PRESIDENT пишет

Поставить АД блок и срезать всю лишнюю бяку

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

InfSub пишет

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

Проверка есть, просто не выкладывал сюда.

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

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

Выделить код

Код:

iimPlayCode('SET !TIMEOUT_PAGE 20\nURL GOTO=http://site.tam/\n');
var z = iimPlayCode(TAG POS=1 TYPE=H2 ATTR=TXT:name*');
if(z > 0){
     iimPlayCode('логинимся');
}


Таким образом, заголовок (или форма авторизации) будет найден даже если страница не успела прогрузиться до конца.

PRESIDENT, InfSub, благодарю за помощь :)

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 31-05-2016 17:26:31

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

Мой код:

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

Выделить код

Код:

var z = iimPlayCode('SET !TIMEOUT_PAGE 20\nURL GOTO=http://site.tam/\nTAG POS=1 TYPE=H2 ATTR=TXT:name*')
if(z == 1){
     iimPlayCode('логинимся');
}


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

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 04-03-2016 13:45:02

InfSub пишет
vitoff пишет

Что попадёт в s при втором проходе.

поместив генерацию рандомного числа в цикл, вы так ж получите каждый раз рандомное число, без eval()

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

Проблема же была и остаётся в другом - прерывание паузы после перезагрузки страницы. Допустим у меня есть код:

Выделить код

Код:

iimPlayCode('WAIT SECONDS=500');
iimPlayCode('сейчас здесь такое произойдёт');

А страница обновляется через 300 сек, таким образом, вторая команда начнёт выполнение не через 500 сек, а раньше. Насколько раньше это произойдёт, зависит от TIMEOUT_PAGE (по умолчанию 300 + 60).

iimPlayCode('WAIT SECONDS=500');
iimPlayCode('WAIT SECONDS=360');
iimPlayCode('сейчас здесь такое произойдёт');

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 03-03-2016 23:01:13

PRESIDENT пишет

При чём TIMEOUT_PAGE к паузе.

При том, что он прерывает паузу.

PRESIDENT пишет

Я тебе дал готовый код, что ты ещё выдумываешь.

И где там диапозон от 310 до 320сек?

PRESIDENT пишет

EVAL используется для запуска JS кода в iim

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

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

Выделить код

Код:

s=Math.floor(Math.random()*100);
while(true){
   iimPlayCode('WAIT SECONDS='+s);
}


Что попадёт в s при втором проходе. Дошло?

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 03-03-2016 20:56:11

PRESIDENT пишет

И пиши уже на JS, хватит этого извращения на iim.

Я пишу на .js:

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

Выделить код

Код:

pauseLong = 'CODE:SET !VAR2 EVAL(\"var randomNumber=Math.random() * (320 - 310) + 310; randomNumber;\")\n';
pauseLong += 'SET !TIMEOUT_PAGE 10\n';
pauseLong += 'WAIT SECONDS={{!VAR2}}\n';


Просто для форума привёл в более наглядный вид.

PRESIDENT пишет

При чём тут это время загрузки страницы TIMEOUT_PAGE

Если убрать TIMEOUT_PAGE, то при обновлении страницы он всё равно будет инициирован со значением по умолчанию (60сек), в результате чего, рандомная пауза будет проигнорирована и следующая команда начнёт выполнение не через 10 сек (как у меня), а через 60, что ещё хуже.

Объясню подробнее. На сайте (биткоин кран), после получения бонуса, идёт отсчёт 300сек, после чего страница автоматически обновляется и можно получить следующий бонус. И, как не крути, во время обновления страницы стартует TIMEOUT_PAGE - либо который задаю я, либо которы

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 03-03-2016 17:07:11

InfSub пишет
vitoff пишет

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

SET !TIMEOUT_PAGE x - время ожидания загрузки страницы (знач по умолчанию 60)
SET !TIMEOUT_STEP x - время ожидания загрузки элемента на странице (знач по умолчанию 10)
SET !ERRORIGNORE YES - игнор ошибок (например, игнорирование ошибки о том что страница не загрузилась, при использовании timeout)

Игнором пользовался и раньше, а вот эта штука SET !TIMEOUT_PAGE x очень помогла. Всё как бы работает, но остались вопросы.

В общем, мне нужно сделать рандомную паузу. Делаю так:

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

Выделить код

Код:

SET !VAR1 EVAL(\"var randomNumber=Math.random() * (320 - 310) + 310; randomNumber;\")
SET !TIMEOUT_PAGE 10
WAIT SECONDS={{!VAR1}}
следующая команда...


Это работает, но рандом здесь не получается. Проблема в том, что при обновлении страницы, запускается TIMEOUT_PAGE, а он прерывает работу WAIT SECONDS и, по истечении тайм

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 02-03-2016 14:21:40

InfSub пишет

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

Если вы об этом: https://forum.mozilla-russia.org/viewto … 34#p682034, информация оказалась полезной. Спасибо.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 02-03-2016 14:14:21

PRESIDENT пишет
vitoff пишет

после которого закрывается текущая (первая) вкладка. В итоге открытой остаётся вторая вкладка - страница подтверждения публикации в твитере. В общем не то

скрытый текст
А ну тогда тебе наоборот нужно закрыть все вкладки, кроме текущей.

Выделить код

Код:

iimPlay('CODE:ONDIALOG POS=1 BUTTON=OK CONTENT=\nTAB CLOSEALLOTHERS');

Предложенный вами код работает так же, как и мой - через раз. Первый раз всё проходит нормально, а второй раз, после клика, запускается таймаут 60 сек и вкладка закрывается после него.
Код ошибки между шагами - 802. Возможно, эта ошибка возникает из-за того, что imacros не успевает загрузить страницу, которая открывается во второй вкладке, так как его тут же перебрасывает на первую. Я не знаю, есть ли такие команды, которые заставят/запретят imacros ждать окончания загрузки страницы, может они помогут?

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 01-03-2016 14:31:28

PRESIDENT пишет

vitoff

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

Выделить код

Код:

iimPlay('CODE:ONDIALOG POS=1 BUTTON=OK CONTENT=\nFRAME F='+i+'\nTAG POS=1 TYPE=SPAN ATTR=ID:l');
...
iimPlay('CODE:ONDIALOG POS=1 BUTTON=OK CONTENT=\nTAB CLOSE');

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

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

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

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 29-02-2016 23:48:50

InfSub пишет
vitoff пишет

Но вы поменяли местами клик по элементу (Tweet) и клик по алерту (ОК) и это не работает.

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

Действительно работает, но только как самостоятельная команда. А мне ещё нужно вторую вкладку закрыть. Если добавляю

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

Выделить код

Код:

iimPlay('CODE:TAB T=2\nTAB CLOSE\n');


, то перед этой командой снова возникает таймаут в 60 секунд.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 29-02-2016 20:50:20

InfSub пишет
vitoff пишет

!TIMEOUT_STEP 0 не помогает

а какое отношение, эта команда, имеет к заданному вами вопросу?

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

InfSub пишет

может быть, вы, все же прочтете офф. вики и посмотрите пример, приведенный там же? Для того, например, чтобы понимать где и каким образом должна располагаться данная команда (ONDIALOG)?

Попробую разобраться, спасибо.

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

PRESIDENT пишет
vitoff пишет

iimPlay(WAIT SECONDS=2);

В этих командах ошибка
iimPlay(

'CODE:

WAIT SECONDS=2

'

);


Прошу прощения, просто для форума я немного изменил команды, дабы не вводить в заблуждение посетителей. На самом деле там такие строки iimPlay(pauseShort); и сама пауза вынесена в переменную.
[spoiler]

PRESIDENT пишет

И твоя пробл

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 29-02-2016 19:20:46

InfSub пишет

перевести ошибку не пробовали?

Я понимаю содержимое ошибки.

InfSub пишет

страница выдала запрос, на который и ругается iMacros

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

InfSub пишет

RTFM по ONDIALOG и поиск по данной ветви форума по этой же команде

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

Если углубиться в её суть, то речь идёт о нескольких шагах:
1. Клик (tweet)
2. Закрыть алерт (ОК)
3. Закрыть вторую вкладку
Об ошибке первого шага я уже рассказал, если выполнить все три, то ошибка возникает на последнем этапе - 802:

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

Page loading timeout, URL: http://www.robotcoingame.com/, line 1 (Error code: 802)

Кстати, адрес, о котором идёт речь.


!TIMEOUT_STEP 0 не помогает
Наверное, лучше код в

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (Часть 1) » 29-02-2016 14:41:41

Всем привет! Прошу помощи в разборе ошибок imacros.
Для наглядности сократил свой скрипт до одной строки:

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

Выделить код

Код:

iimPlay('CODE:FRAME F=28\nTAG POS=1 TYPE=A ATTR=ID:b');


Эта команда делает клик (tweet) по элементу. Клик срабатывает, но imacros НЕ останавливается, от делает таймаут и выдаёт ошибку 1450:

RuntimeError: unhandled alert dialog detected. Dialog message: "Please actually share your tweet! Thanks and enjoy the 10% bonus attack!", line 2 (Error code: -1450)

Собственно вопрос: зачем imacros производит дополнительные манипуляции и как это пресечь?
Буду признателен за помощь.

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]