Что нового

_IELinkGetCollection - выбор нескольких ссылок и нажимание на них подряд

Dere

Новичок
Сообщения
30
Репутация
2
Добрый день.
Прошу помощи и подсказки.
Есть страница на ней может быть одна или несколько ссылок в которых есть одинаковый отрезок "userinfo/index/".
Необходимо открыть страницу с этими ссылками, зайти на первый там сделать пару действий, потом второй и т.д пока не кончатся. Желательно в одном окне ИЕ.
Есть код, но он заходит только на первый. Подскажите как поступить с остальными.
Код:
#include <IE.au3>
$oIE = _IECreate ("http://www.111.ru") ; пример
$oLinks = _IELinkGetCollection($oIE)
 For $oLink In $oLinks
 If StringInStr($oLink.href, 'userinfo/index/') Then
  _IEAction($oLink, "click")
ExitLoop
Endif
Next
Sleep(1000)
_IELinkClickByText ($oIE, 'вступить')
_IELoadWait ($oIE)
Sleep(500)
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
#include <IE.au3>
$oIE = _IECreate ("http://www.111.ru") ; пример
$oLinks = _IELinkGetCollection($oIE)
 For $oLink In $oLinks
 If StringInStr($oLink.href, 'userinfo/index/') Then
  _IEAction($oLink, "click")
ExitLoop ; <--- НУЖНО УБРАТЬ ЭТУ СТРОКУ
Endif
Next
Sleep(1000)
_IELinkClickByText ($oIE, 'вступить')
_IELoadWait ($oIE)
Sleep(500)
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
Все равно заходит по первой ссылке и там зависает выдавая ошибку.
Код:
If StringInStr($oLink.href, 'userinfo/index/') Then
If StringInStr($oLink.href^ ERROR
Нужно что бы он шел потом в верхнюю и кликал на следующую.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
А, ну да, ну да, когда ты перешел по первой ссылке, то остальные уже не актуальны.
Я бы делал в двух IE - один на странице со списком, а в другом ходил бы по ссылкам.
А ты руками то как делаешь переход по всем ссылкам?
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
вот в том то и дело что получаются не актуальны.
А если сделать цикл с верхней ссылкой первой? И нет ли счетчика в _IELinkGetCollection? Типа использовать ссылку 1 и т.д.
На счет двух ИЕ это работает, там не много по другому, я хочу это сделать в одном и засунуть в GUI, там нужно в одном окне, т.к. слетает авторизация на сайте если два окна идут, во втором окне.

А как если такой вопрос: перейти на ссылку вторую или 3ю подходящую под вид "userinfo/index/"
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Перейдя с главной страницы по первой ссылке, Вы, по-хорошему, теряете список всех ссылок.
Перейти на 2-ую или 3-ю страницы, если делать всё в одном окне, Вы можете только вернувшись на главную страницу.
Насколько корректен в Вашей ситуации прямой переход с 1-ой ссылки на 2-ую или 3-ю?
В своё время в ogame был введён контроль логики переходов по страницам. Там ловили ботоводов, которые переходили по страницам не возвращаясь назад.
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
По сути руками так и получается что вначале главная, от туда первая и там какие то функции, потом главная и вторая и т.д.
Вот как подхватить очередность этих ссылок, что бы зайти вначале на 1ю, потом 2ю и т.д. Алгоритм выше хватает первую только ссылку, а как использовать следующие?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Ну вот где-то так

Код:
#include <IE.au3>
#include <array.au3>
Dim $aLinks
$oIE = _IECreate ("http://www.111.ru") ; пример
$oLinks = _IELinkGetCollection($oIE)

For $oLink In $oLinks
	If StringInStr($oLink.href, 'userinfo/index/') Then _ArrayAdd($aLinks, $oLink.href)
Next

For $i=0 To UBound($aLinks)-1
	_IENavigate($oIE, $aLinks[$i])
	_IELinkClickByText ($oIE, 'вступить')
	_IELoadWait ($oIE)
	Sleep(500)
Next
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
к сожалению не работает, даже по ссылке ни по одной не заходит.
А если учесть, что ссылки по порядку не меняются, т.е. при заходе на основной линк получаешь список из N количества ссылок нужных и зайти нужно скажем на третью по порядку или 5ю не важно.
Имеем ряд ссылок на странице:
Код:
http://www.111.ru/userinfo/index/55648
http://www.111.ru/userinfo/index/15654231
http://www.111.ru/userinfo/index/87613
http://www.111.ru/userinfo/index/16431
http://www.111.ru/userinfo/index/867343
Т.е. получается вначале зайти на главную от туда на 1ю по списку и там что то сделать, потом на главную и выбрать 2 и тоже самое. Если даже сделать не циклом а перебором, т.е. зашел на главную с нее скажем на 3ю сслыку. Вот как определить список и выбрать нужную по счету ссылку?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Исправил)

Код:
#include <IE.au3>
#include <array.au3>
Dim $aLinks[1] = [0]
$oIE = _IECreate ("http://www.111.ru") ; пример
$oLinks = _IELinkGetCollection($oIE)

For $oLink In $oLinks
    If StringInStr($oLink.href, 'userinfo/index/') Then _ArrayAdd($aLinks, $oLink.href)
Next

For $i=1 To UBound($aLinks)-1
    _IENavigate($oIE, $aLinks[$i])
    _IELinkClickByText ($oIE, 'вступить')
    _IELoadWait ($oIE)
    Sleep(500)
Next
 
Верх