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

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

№129-04-2016 00:02:44

Dkristof
Участник
 
Группа: Members
Зарегистрирован: 28-04-2016
Сообщений: 8
UA: Firefox 45.0

[РЕШЕНО] Цикл с условием

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


Есть сайт на котором за клацанье по кнопке "Тыкни" начисляют баллы. Есть макрос, который постоянно клацает на эту кнопку.
Но! Над кнопкой всегда пишут обычным текстом (без капчи) какое количество очков ты получишь за данное нажатие(от 1 и выше). И можно либо клацнуть по кнопке и в большинстве случаев получить всего 1 бал, а потом ждать, либо нажать кнопку "Пропустить" и моментально получить следующее предложение.

Цель: Макрос должен перед нажатием на кнопку "Тыкни" проверить эту текстовую строчку и в случае если обещанное количество баллов будет больше или равно 4 то произойдет нажатие на кнопку "Тыкни" после чего продолжится выполнение макроса по сценарию. Если же предложенное кол-во баллов будет меньше 4, то должно произойти нажатие на кнопку "Пропустить". И так по кругу пока не выпадет >=4

Основной макрос который работает сейчас.

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

Выделить код

Код:

VERSION BUILD=8300326 RECORDER=FX
SET !ERRORIGNORE YES
SET !TIMEOUT_TAG 1
SET !TIMEOUT_STEP 1
SET !TIMEOUT_PAGE 7
SET !REPLAYSPEED FAST
TAB T=1
TAG POS=1 TYPE=A ATTR=TXT:Бар<SP>пивной
WAIT SECONDS=7
TAG POS=1 TYPE=DIV ATTR=TXT:КнопкаТыкни
TAB T=2
FRAME F=0
TAG POS=1 TYPE=BUTTON ATTR=TXT:Follow
TAB T=2
WAIT SECONDS=8
TAB CLOSE 
TAB T=1
WAIT SECONDS=12


Цель:
скрытый текст

Выделить код

Код:

VERSION BUILD=8300326 RECORDER=FX
SET !ERRORIGNORE YES
SET !TIMEOUT_TAG 1
SET !TIMEOUT_STEP 1
SET !TIMEOUT_PAGE 7
SET !REPLAYSPEED FAST
TAB T=1
TAG POS=1 TYPE=A ATTR=TXT:Бар<SP>пивной
WAIT SECONDS=7
##Вот на этом моменте хорошо бы втиснуть цикл типа "if else" или "do while. 
##1)Прочесть строку с информацией о начисленных после нажатия на кнопку "Тыкни" баллах. 2)Если баллы >=4 то идем дальше. 
##4)Иначе клацаем кнопку "пропустить" и снова читаем 
##строку с информацией о баллах. И так по кругу. 
##Вот строчка  о  кол-ве баллов которые будут начислены. (TAG POS=1 TYPE=B ATTR=TXT:Ты<SP>получишь<SP>4<SP>балла<SP>за<SP>нажатие.)
##А вот адрес кнопки на пропуск (TAG POS=1 TYPE=A ATTR=TXT:Skip)
TAG POS=1 TYPE=DIV ATTR=TXT:КнопкаТыкни
TAB T=2
FRAME F=0
TAG POS=1 TYPE=BUTTON ATTR=TXT:Follow
TAB T=2
WAIT SECONDS=8
TAB CLOSE 
TAB T=1
WAIT SECONDS=12


Есть идеи как это можно сделать? :sick:

Отредактировано Dkristof (29-04-2016 00:09:11)

Отсутствует

 

№229-04-2016 00:32:25

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Firefox 46.0
Веб-сайт

Re: [РЕШЕНО] Цикл с условием

Dkristof пишет

Вот на этом моменте хорошо бы втиснуть цикл типа "if else" или "do while.

так перепишите скрипт на js, в чем проблема-то?


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№329-04-2016 00:36:54

PRESIDENT
Участник
 
Группа: Members
Зарегистрирован: 09-04-2015
Сообщений: 885
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

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

Выделить код

Код:

for(;;){
iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:Бар<SP>пивной');
iimPlayCode('WAIT SECONDS=7');
iimPlayCode('TAG POS=1 TYPE=B ATTR=TXT:Ты<SP>получишь*нажатие. EXTRACT=TXT'); point=iimGetExtract().match(/\d+/);
if(point < 4)
iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:Skip');
else{
iimPlayCode('TAG POS=1 TYPE=DIV ATTR=TXT:КнопкаТыкни');
...
}}


Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.

Отсутствует

 

№429-04-2016 12:24:28

Dkristof
Участник
 
Группа: Members
Зарегистрирован: 28-04-2016
Сообщений: 8
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

PRESIDENT
Спасибо!
Всё прекрасно работает.
Только добавил "break" в конце цикла и счетчик количества повторений общего скрипта. Зер гуд.
Не знал, что тут в js файле, можно использовать помимо прямого кода js еще и imm код через команду iimPlayCode('')
Мммм какие перспективы.
Вопрос не в тему.

скрытый текст
Почему может вылетать браузер "iceweasel" под Debian, примерно через час выполнения скрипта? Причем без каких либо ошибок, просто закрывается.

Отсутствует

 

№529-04-2016 15:12:28

Dkristof
Участник
 
Группа: Members
Зарегистрирован: 28-04-2016
Сообщений: 8
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

Кажется понял.

Там две вкладки. Одна постоянно открытая. Собственно вкладка с кнопкой.
Вторая вкладка каждую итерацию открывается и закрывается. После нажатия на кнопку "Тыкни". Далее проводятся еще несколько действий на второй вкладке, после чего отрабатывает  TAB CLOSE  и вторая вкладка закрывается. Всё это зациклено через счетчик на 2000 повторов.

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

Выделить код

Код:

VERSION BUILD=8300326 RECORDER=FX
SET !ERRORIGNORE YES
SET !TIMEOUT_TAG 1
SET !TIMEOUT_STEP 1
SET !TIMEOUT_PAGE 7
SET !REPLAYSPEED FAST
TAB T=1
TAG POS=1 TYPE=A ATTR=TXT:Бар<SP>пивной
WAIT SECONDS=7
for(;;){
iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:Бар<SP>пивной');
iimPlayCode('WAIT SECONDS=7');
iimPlayCode('TAG POS=1 TYPE=B ATTR=TXT:Ты<SP>получишь*нажатие. EXTRACT=TXT'); point=iimGetExtract().match(/\d+/);
if(point < 4)
iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:Skip');
else{
iimPlayCode('TAG POS=1 TYPE=DIV ATTR=TXT:КнопкаТыкни'); //вот тут происходит переход по кнопке "тыкни" Открывается новая вкладка.
}}
iimPlayCode('..........................'); // тут происходит действия на второй вкладке. 
WAIT SECONDS=8   //ждем 8 сек
TAB CLOSE       //закрываем вторую вкладку
TAB T=1
WAIT SECONDS=12 //снова оказываемся на первой вкладке с кнопкой "тыкни" и ждем 12 сек.


Теперь проблема.
Иногда, на том же месте, заместо "Ты<SP>получишь*нажатие" выскакивает другая надпись: "TAG POS=1 TYPE=B ATTR=TXT:Баллов<SP>пока<SP>нет"
Скрипт не понимает эту строчку, а следственно не происходит переход на вторую вкладку и скрипт с радостной улыбкой закрывает сам себя. Вот только почему это происходит рандомно. Скрипт может либо проскочить этот момент, либо закрыть страницу. О_О

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

Выделить код

Код:

VERSION BUILD=8300326 RECORDER=FX
SET !ERRORIGNORE YES
SET !TIMEOUT_TAG 1
SET !TIMEOUT_STEP 1
SET !TIMEOUT_PAGE 7
SET !REPLAYSPEED FAST
TAB T=1
TAG POS=1 TYPE=A ATTR=TXT:Бар<SP>пивной
WAIT SECONDS=7
for(;;){
iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:Бар<SP>пивной');
iimPlayCode('WAIT SECONDS=7');
iimPlayCode('TAG POS=1 TYPE=B ATTR=TXT:Ты<SP>получишь*нажатие. EXTRACT=TXT'); point=iimGetExtract().match(/\d+/); //вот в этой строке иногда меняется значение на сайте. 
if(point < 4)
iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:Skip');
else{
iimPlayCode('TAG POS=1 TYPE=DIV ATTR=TXT:КнопкаТыкни'); //вот тут происходит переход по кнопке "тыкни" Открывается новая вкладка.
}}
iimPlayCode('..........................'); // тут происходит действия на второй вкладке. 
WAIT SECONDS=8   //ждем 8 сек
TAB CLOSE       //закрываем вторую вкладку
TAB T=1
WAIT SECONDS=12 //снова оказываемся на первой вкладке с кнопкой "тыкни" и ждем 12 сек.

Отредактировано Dkristof (29-04-2016 16:11:42)

Отсутствует

 

№629-04-2016 15:17:51

PRESIDENT
Участник
 
Группа: Members
Зарегистрирован: 09-04-2015
Сообщений: 885
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

Вместо TAB CLOSE используй TAB CLOSEALLOTHERS - закрыть все вкладки кроме текущей.
А то у тебя получается, если у тебя всего 1 таб открыт, то таб клозе закроет весь фаерфокс.


Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.

Отсутствует

 

№729-04-2016 15:53:34

Dkristof
Участник
 
Группа: Members
Зарегистрирован: 28-04-2016
Сообщений: 8
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

PRESIDENT
Не пойдет, TAB CLOSE закрывает именно вторую вкладку. По крайней мере должен закрывать только вторую. TAB CLOSEALLOTHERS закроет первую вкладку, т.к. на момент выполнения мы будем находиться на второй вкладке.

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

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

Выделить код

Код:

for(;;){
iimPlayCode('TAG POS=1 TYPE=B ATTR=TXT:Ты<SP>получишь*нажатие. EXTRACT=TXT'); point=iimGetExtract().match(/\d+/);
iimPlayCode('TAG POS=1 TYPE=B ATTR=TXT:Закончились<SP>баллы. EXTRACT=TXT'); nopoint=iimGetExtract().match(/\d+/);
if(point < 4)
iimPlayCode('TAG POS=1 TYPE=A ATTR=TXT:Skip');
else if(nopoint >= 0)
iimPlayCode('REFRESH'); //тут по идеи страница должна обновиться. Но ничего хорошего из этого не вышло. Скрипт вообще перестал адекватно разбирать информацию из этой текстовой строки.
else{
iimPlayCode('TAG POS=1 TYPE=DIV ATTR=TXT:КнопкаТыкни');
}}

Отредактировано Dkristof (29-04-2016 16:33:40)

Отсутствует

 

№829-04-2016 22:01:27

PRESIDENT
Участник
 
Группа: Members
Зарегистрирован: 09-04-2015
Сообщений: 885
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

Dkristof
Загляни сюда для начала



Выделить код

Код:

...
if(iimPlayCode('TAG POS=1 TYPE=B ATTR=TXT:Закончились<SP>баллы.')>0)
iimPlayCode('REFRESH');
...

Dkristof пишет

TAB CLOSE закрывает именно вторую вкладку. По крайней мере должен закрывать только вторую

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

Отредактировано PRESIDENT (29-04-2016 23:16:16)


Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.

Отсутствует

 

№930-04-2016 00:04:51

Dkristof
Участник
 
Группа: Members
Зарегистрирован: 28-04-2016
Сообщений: 8
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

PRESIDENT
спасибо! после праздников возобновлю данный квест)

Отсутствует

 

№1011-05-2016 22:58:09

Dkristof
Участник
 
Группа: Members
Зарегистрирован: 28-04-2016
Сообщений: 8
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

Причин закрытия вкладки было несколько.
1) Иногда, у людей были ники аналогичные с названием кнопки. И скрипт кликал по ним, естественно перехода на новую страницу не происходило. Далее скрипт закрывал наш сайт.
Решение: записывать координаты кнопки примерно след. образом. О схожих с кнопкой словах можно забыть.

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

Выделить код

Код:

iimPlayCode('TAG POS=2 TYPE=DIV ATTR=CLASS:btn3')


2) Опять же иногда, после клика по кнопке, сайт тупил и сам закрывал открывшуюся вкладку по тайм ауту. Но скрипт то уже начал отрабатывать и в итоге закрывал оставшуюся вкладку с  нужным сайтом.
Решение немного кривое но какое есть. Можно заместо  TAB CLOSE прикрутить функцию с проверкой какой-нибудь фразы с отрывающейся вкладки. Например:
скрытый текст

Выделить код

Код:

function proverkaURL() {
    var privyzkaOK = "Москва - большой город"; // задаем текст с которым скрипт будет сверяться перед закрытием вкладки
    iimPlayCode('TAG POS=1 TYPE=H2 ATTR=TXT:* EXTRACT=TXT'); privyzkaPARS=iimGetExtract().match(/\D+/); // скрипт считывает текст и заносит его в переменную "privyzkaPARS"
iimPlayCode('WAIT SECONDS=1')
if (privyzkaPARS == privyzkaOK){ // тут наш считанный со страницы текст сверяется с заранее заданным текстом в переменной privyzkaOK.
    iimPlayCode('TAB CLOSE'); // и если текст будет идентичным то вкладка закроется. Если скрипт такого текста не найдет, то закрываться ничего не будет. 
}
}


3) Браузер через некоторое время зависает и крашится. Иногда через 2 часа, иногда через 4. Решения не нашел. Похоже мозила в паре с imacros с каждой минутой потребляет все больше и больше оперативной памяти. В итоге давится и крашится. Это только у меня так?

Отредактировано Dkristof (11-05-2016 23:12:22)

Отсутствует

 

№1112-05-2016 09:32:44

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 50.0
Веб-сайт

Re: [РЕШЕНО] Цикл с условием

3 - Поиск по форуму iMacros по слову "перезапуск" и аналогичным
2 - команда tab closeallothers при правильном применении - решает все проблемы
1 - читаем внимательно форум, особенно 2 основных темы, на предмет, как правильно идентифицировать элемент на странице


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№1212-05-2016 15:53:25

dim222
Участник
 
Группа: Members
Зарегистрирован: 06-03-2016
Сообщений: 417
UA: Chrome 50.0

Re: [РЕШЕНО] Цикл с условием

Dkristof пишет

Браузер через некоторое время зависает и крашится. Иногда через 2 часа, иногда через 4. Решения не нашел. Похоже мозила в паре с imacros с каждой минутой потребляет все больше и больше оперативной памяти. В итоге давится и крашится. Это только у меня так?

У себя я делаю так . В строке набери about:config и поменяй

browser.cache.disk.enable - выбери false
dom.ipc.plugins.enabled - выбери false
browser.tabs.closeWindowWithLastTab - выбери false
browser.sessionhistory.max_total_viewer - выбери 0

Отсутствует

 

№1312-05-2016 17:50:27

Dkristof
Участник
 
Группа: Members
Зарегистрирован: 28-04-2016
Сообщений: 8
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

dim222
удалено, избыточное цитирование
Не помогло. По прежнему за полтора чача процесс firefox.exe отжирает более 1гб памяти. Причем даже если остановить скрипт, закрыть все вкладки и оставить лишь одну с пустой страницей, firefox.exe уменьшиться лишь немного. Останется занято примерно 600 мб.

Если же скрипт будет продолжать работать то firefox.exe разрастется до 4гб и благополучно загнется.
:sick:


InfSub

Отсутствует

 

№1412-05-2016 18:12:44

PRESIDENT
Участник
 
Группа: Members
Зарегистрирован: 09-04-2015
Сообщений: 885
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

Dkristof
Уже много раз обсуждалось;
переходи на старую добрую портабельку 3.6.* и АБП к ней.


Пробуй АБП установить и правильно фильтры настрой, те все фильтра и подписки что там удали вообще.
Если не знаешь как свои фильтра составлять пиши на ВП адрес сайта, помогу.


Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.

Отсутствует

 

№1512-05-2016 18:19:21

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Firefox 45.0
Веб-сайт

Re: [РЕШЕНО] Цикл с условием

PRESIDENT
в 3.6 не все работает и не все сайты подгружают требуемое
так что, тут перезапуск FF через cmd only


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№1612-05-2016 22:46:34

Dkristof
Участник
 
Группа: Members
Зарегистрирован: 28-04-2016
Сообщений: 8
UA: Firefox 45.0

Re: [РЕШЕНО] Цикл с условием

PRESIDENT

К сожалению да, версия 3.6 половину сайтов не загружает. На второй половине проблемы с авторизацией. (например, в том же инстаграме авторизоваться не получилось)
эх жаль. А что такое АДП ? АдблокПлюс? И зачем удалять существующие фильтры?

InfSub
Прежде чем разбираться как это реализовать, данный трюк прокатит в unix системах? Debian\ubuntu?

Отредактировано Dkristof (12-05-2016 22:52:27)

Отсутствует

 

№1712-05-2016 23:13:32

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 50.0
Веб-сайт

Re: [РЕШЕНО] Цикл с условием

Dkristof
Прокатит везде, где вы можете запустить программу (firefox) передав ей параметры, через консоль (для Win - это cmd, для *nix - bash/sh и т.д.)

Добавлено 12-05-2016 23:18:01
Да, АБП - это adblock plus, а фильтры удаляются для облегчения и меньшей прожорливости, создаете свои только под нужные сайты, а не под все возможные (по умолчанию)

Отредактировано InfSub (12-05-2016 23:18:01)


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№1821-07-2017 11:49:03

Slavon
Участник
 
Группа: Members
Зарегистрирован: 21-07-2017
Сообщений: 2
UA: Firefox 54.0

Re: [РЕШЕНО] Цикл с условием

Друзья, помогите с условием :sick:


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

Выделить код

Код:

TAG POS=1 TYPE=BUTTON FORM=NAME:NoFormName ATTR=TXT:Далее


---------если кнопки нет, то пропускаем этот шаг------------
скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=BUTTON ATTR=TXT:Оплатить


------если не выполненно условие выше----------
скрытый текст

Выделить код

Код:

TAG POS=1 TYPE=BUTTON ATTR=TXT:Отмена


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

Очень на вас надеюсь, не могу ответ найти на просторах интернета.

InfSub

Отредактировано Slavon (21-07-2017 11:59:51)

Отсутствует

 

№1921-07-2017 22:46:40

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 59.0
Веб-сайт

Re: [РЕШЕНО] Цикл с условием

Slavon пишет

не могу ответ найти на просторах интернета.

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

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

Отредактировано InfSub (21-07-2017 22:50:25)


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№2024-07-2017 11:42:43

Slavon
Участник
 
Группа: Members
Зарегистрирован: 21-07-2017
Сообщений: 2
UA: Firefox 54.0

Re: [РЕШЕНО] Цикл с условием

То, что я вывел не работает:

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

Выделить код

Код:

for (;; ){
if(iimPlay("CODE:SET !TIMEOUT_STEP 1\n TAG POS=1 TYPE=BUTTON ATTR=TXT:Оплатить")<0){ break;

}else{
    iimPlayCode('SET !TIMEOUT_STEP 1 \n TAG POS=1 TYPE=SPAN ATTR=TXT:Отмена \n TAG POS=1 TYPE=BUTTON ATTR=TXT:Отмена');
}};


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

InfSub

Отсутствует

 

№2124-07-2017 23:06:31

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 59.0
Веб-сайт

Re: [РЕШЕНО] Цикл с условием

Slavon
экстрасенсы в отпуске, так что:
- во первых читаем правила, форума и раздела iMacros
- задаем вопрос так, чтобы на него можно было ответить, а не гадать:
-- что значит не работает? что не работает? не работает "отмена" или не работает "оплатить"? краткость - сестра таланта? - если да, то вам не сюда, иначе - потрудитесь задать вопрос так, чтобы не было еще сотни наводящих вопросов;
-- приведите вывод iimGetErrorText() после каждого вызова iimPlay()/iimPlayCode(), например;
-- убедитесь, что кнопки "оплатить" нет на сайте, в тот момент, когда вы ее не видите...


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

Board footer

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