Что нового

[Автоматизация] ошибка в IE.au3 при повторной авторизации на сайте

Shinoby

Новичок
Сообщения
81
Репутация
2
Здравствуйте.
пробую залогиниться на сайт, в случае ошибки по капче пробую снова и получаю ошибку:
Код:
C:\Program Files\AutoIt3\Include\IE.au3 (1299) : ==> The requested action with this object has failed.:
If String($o_object.type) = "file" Then
If String($o_object.type^ ERROR

все ломается на _IEFormElementSetValue($oLogin, $sLogin) после него даже сообщение не выходит.

Код:
#include <IE.au3>
#include <ScreenCapture.au3>
#include <_antigatecom.au3>

$sLogin = '####'
$sPass = '####'
$sUrl = 'http://####/login.php'

$oIE = _IECreate($sUrl)
WinSetState("[CLASS:IEFrame]", '', @SW_MAXIMIZE)
$oLogin = _IEGetObjById($oIE, 'login_username')
$oPass = _IEGetObjById($oIE, 'pwd')
$oCapchEntr = _IEGetObjById($oIE, 'captcha')
$oCapchImg = _IEGetObjById($oIE, 'capimg')
$oButton = _IEGetObjByName($oIE, 'Login2')


$capx = _IEPropertyGet($oCapchImg, "screenx")
$capy = _IEPropertyGet($oCapchImg, "screeny")

;;MsgBox(0, 'координата х/y', "x:" & $capx & "y:" & $capy )
While 1
   While 1
	  FileDelete("D:\####\captcha.jpg")
	  _ScreenCapture_Capture("D:\####\captcha.jpg", $capx, $capy, $capx + 100, $capy + 30)
	  $ccapch = _antigatecom_get("####", "D:\####\captcha.jpg", 2)
	  If StringInStr($ccapch, "ERROR") = 0 Then ExitLoop
   WEnd
   MsgBox(0, 'капча:', $ccapch )
    MsgBox(0, 'логина данные', $sLogin & "   " & $oLogin )
   _IEFormElementSetValue($oLogin, $sLogin)  ;; при повторном проходе скрипт дохнет тут
   MsgBox(0, 'логин', @error & "   " & @Extended ) 
   MsgBox(0, 'пароля данные', $sPass & "   " & $oPass )
   _IEFormElementSetValue($oPass, $sPass)
    MsgBox(0, 'пасс', @error & "   " & @Extended )
   _IEFormElementSetValue($oCapchEntr, $ccapch)
    MsgBox(0, 'капча', @error & "   " & @Extended )
   _IEAction($oButton, "click")
    MsgBox(0, 'кнопка', @error & "   " & @Extended )
   _IELoadWait($oIE)
    MsgBox(0, 'ввод', @error & "   " & @Extended )

;;$kUrl = _IEPropertyGet($oIE, "locationurl")
   Opt("WinTitleMatchMode", 2)
   If WinActive("Watching Ad - Ваш аккаунт") <>0 Then ExitLoop
   Sleep(1000)
   _IENavigate($oIE, $sUrl)
WEnd   

;;$aUrl = 
_IENavigate($oIE, 'http://####/acc.php')


не могу понять в связи с чем ошибка появляется. при первом прогоне цикла - все отлично, и если он удачный то работа идет дальше. Но при повторном - все мрет, при том что значение в переменной логина $sLogin - не меняется, проверял сообщением.
прошу помощи.


Добавлено:
Сообщение автоматически объединено:

где бы это прочесть, но видимо при присвоении хендлов.... присваивается координата объекта?! :stars:
так или иначе, но проблема решилась включением присвоения хендлов в цикл и определение их каждый раз заново. Так как страница одна и таже думал что этого достаточно сделать один раз.
 
Верх