Что нового

[Сеть, интернет] Проблема с объектами IE

Vladd13579

Новичок
Сообщения
7
Репутация
0
Пишу скрипт для автоматизации действий на сайте, запускаю,работает некоторое время,потом вылетает ошибка.
The requested action with this object has failed ,почти каждый раз на разной строке ошибка. Уже весь код переписал. Наставил кучу проверок на свойства и "объект ли эта переменная?", не знаю уже что и вписать туда. Всего два клика.
Пожалуйста помогите.

Код:
#include <IE.au3>
Func Terminate()
    Exit 0
 EndFunc
_IEErrorHandlerDeregister ()
HotKeySet("{ESC}", "Terminate")
while 1

$oie=_IECreate("https://www.drive2.ru/r/renault/419151/",0,1,1)
;ConsoleWrite(ObjName($oie,2))
;exit 0
$hTimer = TimerInit()
while TimerDiff($hTimer)<120000
      if _IELoadWait($oie,100,60000)=0 Then
	  ConsoleWrite("ошибочка","страничка не прогрузилась за целую минуту!!!")
	  exit @error
   EndIf
while(1)
$oButtons = _IETagNameGetCollection($oIE, 'button')
if VarGetType($oButtons)="Object" Then
   ConsoleWrite("обьект1"&@CR)
   ExitLoop
Else
   sleep(500)
EndIf
WEnd
For $oButton In $oButtons
;  ConsoleWrite("стр= "&$oButton.classname&@CR)
  if _IEPropertyGet($oButtons,'innertext')<>0 Then
    If StringInStr($oButton.classname,"is-off is-pressed")<>0 Then
	   ConsoleWrite($oButton.classname&" пропустил"&@CR)
        ExitLoop
		Else
    If StringInStr($oButton.classname,"c-like__button js-like-button c-button c-button--solid c-button--l")<>0 Then
	   if IsObj($oButton)=1 Then
        $oButton.Click()
		 ConsoleWrite($oButton.classname&" нрав"&@CR)
        ExitLoop
	 EndIf
  EndIf
  EndIf
  EndIf
 Next
 sleep(2000)

while(1)
  $oButtons1 = _IETagNameGetCollection($oIE, 'a')
if VarGetType($oButtons1)="Object" Then
   ConsoleWrite("обьект2"&@CR)
   ExitLoop
Else
   sleep(500)
EndIf
WEnd
For $oButton1 In $oButtons1
    ; ConsoleWrite($oButton.innerHTML&@CR)
     if $oButton1.innerHTML=="Случайная машина" Then
	$oButton1.Click()
		ConsoleWrite("случайная машина"&@CR)
	ExitLoop
 EndIf
 Next
 WEnd
 _IEQuit($oie)
 sleep(1000)
WEnd
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Попробуйте так:
Код:
#include <IE.au3>

Global $iState = 0
HotKeySet("{ESC}", "_Exit")

$oIE =_IECreate("https://www.drive2.ru/r/renault/419151/")
$oButtons = $oIE.document.getElementsByClassName("c-like__button js-like-button c-button c-button--solid c-button--l")
If $oButtons.length = 1 Then _
   $oButtons(0).click
_IELoadWait($oIE)

AdlibRegister("_ClickRandomCar", 10000)

While 1
   Sleep(100)
WEnd

Func _ClickRandomCar()
   If Not $iState Then
	  _IELinkClickByText($oIE, 'Случайная машина')
	  _IELoadWait($oIE)
	   $iState = @error
   EndIf
EndFunc ;==>_ClickRandomCar

Func _Exit()
   AdlibUnRegister("_ClickRandomCar")
   _IEQuit($oIE)
   Exit
EndFunc ;==>_Exit
 
Автор
V

Vladd13579

Новичок
Сообщения
7
Репутация
0
Там надо нажимать лайк и потом нажимать рандомная машина, попробывал кусок который нажимает лайк вставить в цикл и выбивает ошибку(
The requested action with this object has failed.:
If $oButtons.length = 1 Then $oButtons(0).click
If $oButtons.length = 1 Then $oButtons(0)^ ERROR
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Vladd13579
Попробуйте.
Код:
#include <IE.au3>

Global $iState = 0
HotKeySet("{ESC}", "_Exit")

$oIE =_IECreate("https://www.drive2.ru/r/renault/419151/")

AdlibRegister("_ClickRandomCar", 10000)

While 1
   Sleep(100)
WEnd

Func _ClickRandomCar()

   If Not $iState Then

	  $oButtons = _IETagNameGetCollection($oIE, "button")
	  For $oButton In $oButtons
		 If StringInStr($oButton.innerText, "Нравится") Then
			$oButton.click
		 EndIf
	  Next

      _IELinkClickByText($oIE, 'Случайная машина')
      _IELoadWait($oIE)
       $iState = @error
   EndIf
EndFunc ;==>_ClickRandomCar

Func _Exit()
   AdlibUnRegister("_ClickRandomCar")
   _IEQuit($oIE)
   Exit
EndFunc ;==>_Exit
 
Автор
V

Vladd13579

Новичок
Сообщения
7
Репутация
0
Спасибо большое за помощь, взял кусок кликающий на лайк, и заменил клик на кнопку рандомная машина, откопал таки в коде сайта, как она работает= добавляет к основной ссылке random . и теперь клик делается только на лайк. Тестирую ошибок не возникает. :smile:
 
Верх