Разные циклы используют одну переменную [[CYCLE_INDEX]]
-
Скрипт просматривает моих читателей в твиттере, находит тех, кого не читаю и нажимает кнопку "Читать". Такой алгоритм нормально работает. Когда добавляю дополнительное условие проверки (сверка со списком), возникает конфликт.
Первый цикл использует переменную CYCLE_INDEX.
Второй цикл, который сверяет со списком, тоже накручивает переменную CYCLE_INDEX
Когда доходит очередь до выполнения Двигать Мышь И Кликнуть На Элемент , скрипт зависает.
При выполнении первого цикла CYCLE_INDEX имеет значение 2,3,5
После выполнения второго цикла значение CYCLE_INDEX увеличивается на количество строк в списке и получается 45...52... и так далее.
Вопрос: как назначить для команды Foreach отдельную переменную?
Пробовал CYCLE_INDEX переименовывать в CYCLE_INDEX2, но так программа останавливается с сообщением об ошибке.
Или как еще можно организовать работу вложенных циклов?
Вот скрип на всякий случай
0_1483047520949_Twi-test-02.xml
-
Можно решить созданием перед циклом новой пременной и в цикле уже увеличивать ее
-
А как эту переменную привязать к конкретному циклу?
Просто в начале цикла создать и цикл ее начнет использовать?
-
Нет, создать перед циклов, а в начале цикла ее увеличивать
-
Поздравляю всех с наступившим 2017 годом!
А у меня новые вопросы в Новом году. Нужно просматривать сообщения по порядку. В каждом сообщении взять название аккаунта, сверить со списком, при положительном ответе кликнуть на сердечко.
Все сообщение помещено в родительский контейнер слой (div) с селектором:
div > div.content
выделенный на рисунке красным цветом.
Внутри находится слой
div > div.content > div.stream-item-header > a
с названием аккаунта (зеленый на рисунке)
Так же есть отдельный слой с сердечком (синий на рисунке)
div > div.content > div.stream-item-footer > div.ProfileTweet-actionList.js-actions >
по которому нужно кликать.
Команда Начать цикл привязывается к слою div > div.content, внутри которого находятся все остальные.
Команда Получить Код Элемента :
[[FOR_EACH_CSS >]]<[[CYCLE_INDEX]]>
будет брать код всего родительского контейнера (более 300 строчек кода и много килобайт)
Чтобы выбрать для обработки более узкую область, пробовал Получить Код Элемента указывать так:
[[FOR_EACH_CSS > div.stream-item-header > a]]<[[CYCLE_INDEX]]>
и так:
[[[[FOR_EACH_CSS]] > div.stream-item-header > a]]<[[CYCLE_INDEX]]>
и так:
([[FOR_EACH_CSS]] > div.stream-item-header > a)<[[CYCLE_INDEX]]>
Не работает никак.
Я делаю синтаксическую ошибку, не правильно пишу команду, или такая команда в принципе не может работать?
-
@servasw45 Вот пример как я беру "n"-ый элемент в поле с типом Expression
'#search_more_results > div:nth-of-type(' + VAR_CUR_INDEX + ') .labeled.name > a';
Для поля с типом String, будет выглядеть примерно так:
#search_more_results > div:nth-of-type([[CUR_INDEX]]) .labeled.name > aТут конечно если ты шаришь в селекторах css.
VAR_CUR_INDEX это переменная [[CUR_INDEX]], я её использую в самом внутреннем цикле.Подробнее о css селекторе
тут - http://htmlbook.ru/css/nth-of-typeИ еще, лично у меня в работе с динамическим контентом, к примеру вк стена с автоподгружением элементов, FOR_EACH_CSS работает ровным счетом "на 1 итерацию", так что обходился без этого(надеюсь у тебя все ок с этим)
-
Когда доходит очередь до выполнения Двигать Мышь И Кликнуть На Элемент , скрипт зависает.
Да, есть такой баг, при выходе из внутреннего цикла, CYCLE_INDEX не содержит значение для внешнего цикла. Это будет исправлено. Пока можно воспользоваться тем, что значение CYCLE_INDEX вначале работы цикла всегда правильное и сохранить его в отдельную переменную.
-
@servasw45 Селектор равный
селектор1 селектор2
(между ними пробел) будет искать селектор2 содержащийся внутри селектор1.Например, если твитт ищется по
селектор1
, а ник по.username
, то искать ник создавший конкретный твитт можно поселектор1 .username
такая запись
[[FOR_EACH_CSS]] .username<[[CYCLE_INDEX]]>
значит ник внутри твитта с номером CYCLE_INDEX
Пример проекта
0_1483531961641_twitterforeach.xml
-
на сегодня (спустя год этому топику) опять столкнулся с необходимостью пересохранять переменные CYCLE_INDEX во вложенных циклах, думал, что ситуация исправлена. Или я чего-то недосмотрел?
-
@jurassik said in Разные циклы используют одну переменную [[CYCLE_INDEX]]:
на сегодня (спустя год этому топику) опять столкнулся с необходимостью пересохранять переменные CYCLE_INDEX во вложенных циклах, думал, что ситуация исправлена. Или я чего-то недосмотрел?
причем ситуация та же и с FOR_EACH_CSS
долго не мог понять почему нарушается видимость элементов, а оказалось, что теряются и нужно пересохранять обе переменные
решил вложенные циклы завернуть в функции c сохранением на входе и восстановлением этих имен на выходе
п.с. честно говоря так проблему и не решил пока что. С момента появления вложенных циклов по "всем элементам" цикл больше не работает. Переменные уже сохраняются, но не смотря на их значения он просто долбит в первый элемент меню.
Придется переделать на собственную логику обхода элементовДОЛГО МУДОХАЛСЯ, НО РЕШИЛ ПРОБЛЕМУ, ОКАЗАЛОСЬ:
- Что на переменную CYCLE_INDEX так же влияет вложенный цикл (в том числе во вложенных функциях) WHILE(УСЛОВИЕ)...
- В циклах по элементам есть еще одна переменная
VAR_"ELEMENT_LENGTH" (к ней нет доступа через переменные обычным способом[[ELEMENT_LENGTH]], решил через expression)
РЕЗЮМЕ:
Добавил обертывание таких циклов сохранением-восстановлением
VAR_FOR_EACH_CSS,
VAR_CYCLE_INDEX,
VAR_ELEMENT_LENGTH,
и, где это было возможно, применил другие методы.