Что нового

Ошибка при попытке перейти по ссылке

Radik

Новичок
Сообщения
71
Репутация
1
Хочу переходить по ссылкам на сайте. Делаю так:
Код:
$oIE = _IECreate($oUrl)
_IELoadWait($oIE)

$oLinks = _IELinkGetCollection($oIE)
For $oLink In $oLinks
	If StringInStr($oLink.href, '/article/') Then
		_IEAction($oLink, 'click')
		_IELoadWait($oIE)
	EndIf
Next


Вылетает с ошибкой:
D:\AutoIT\Woman\00.au3 (17) : ==> The requested action with this object has failed.:
If StringInStr($oLink.href, '/article/') Then
If StringInStr($oLink.href^ ERROR

В чем проблема?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Ссылка не имеет такого атрибута.
Лучше делайте так:
Код:
$oLinks = _IETagNameGetCollection($oIE,'a')
 
Автор
R

Radik

Новичок
Сообщения
71
Репутация
1
Почему не имеет, даже в хелпе:
Код:
For $oLink In $oLinks
    MsgBox(0, "Link Info", $oLink.href)
Next

А в вашем примере, что за параметр 'a'?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
вы получили коллекцию ссылок, в одной из которых нет атрибута href. Что конкретно собирает IE методом links трудно сказать, может туда попадают не только тэги a, а еще что нибудь, или вам попался элемент AREA без этого атрибута. Поэтому если вам нужны ссылки (те что <a>), то функция
Код:
_IETagNameGetCollection
, лучше подходит

:
администраторы когда нибудь отменят автоматический разрыв строки кода autoit?
 
Автор
R

Radik

Новичок
Сообщения
71
Репутация
1
Попробовал с
Код:
_IETagNameGetCollection
, результат тот же. Решил сделать по другому, сначала:
Код:
$oLinks = _IELinkGetCollection ($oIE)
For $oLink In $oLinks
   WinActivate("Безымянный — Блокнот")
   Send($oLink.href)
Next

Потом все это в массив и дальше:
Код:
Dim $sUrl[N] = [...]
For $i = 0 To Ubound($sUrl) - 1
   _IENavigate($oIE, $sUrl[$i])
   _IELoadWait($oIE)
Next

Только проблема в том что в массиве одна и та же ссылка по 3-4 раза повторяется.
Это можно как-то исправить?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
странности конечно с этой ошибкой. Можите перед вызовом свойства href проверять IsObj($oLink) и если да, то работать дальше, если нет, то continueloop
 
Верх