Я тоже.Не знаком с javascript.
#include <IE.au3>
$sWorld = 'Delta'
$sLogin = 'Login'
$sPass = 'Pass'
$oIE = _IECreate('http://ru.ikariam.com/')
If @error Then
MsgBox(16, 'Error', 'Error')
Exit
EndIf
For $i = 1 To 1
$oBtn = _IEGetObjById($oIE, 'btn-login')
If @error Then ExitLoop
_IEAction($oBtn, 'click')
If @error Then ExitLoop
$oForm = _IEGetObjById($oIE, 'loginForm')
If @error Then ExitLoop
$oSelect = _IEGetObjById($oIE, 'logServer')
If @error Then ExitLoop
_IEFormElementOptionSelect($oSelect, $sWorld, 1, 'byText')
If @error Then ExitLoop
$oLogin = _IEFormElementGetObjByName($oForm, 'name')
If @error Then ExitLoop
$oPass = _IEFormElementGetObjByName($oForm, 'password')
If @error Then ExitLoop
_IEFormElementSetValue($oLogin, $sLogin)
If @error Then ExitLoop
_IEFormElementSetValue($oPass, $sPass)
If @error Then ExitLoop
_IEFormSubmit($oForm, 0)
If @error Then ExitLoop
Next
If @error Then
_IEQuit($oIE)
MsgBox(16, 'Error', 'Error')
Exit
Else
_IELoadWait($oIE)
MsgBox(64, 'Info', 'OK')
EndIf
В случае, если какая-либо функция вернет ошибку, то надо закрывать IE и выдавать сообщение об ошибке и так писать после каждой функции или функцию свою для этого делать, а в цикле, если ошибка - вышли из цикла, выдали сообщение и все. Мне так удобнее.Для чего это?
Попробуйте так:Либо вообще создать свое окно браузера, пусть даже используя для этого экслорер.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
$sWorld = 'Delta'
$sLogin = 'Login'
$sPass = 'Pass'
$oIE = _IECreateEmbedded()
GUICreate("Embedded Web control Test", @DesktopWidth - 100, @DesktopHeight - 100, -1, -1, _
$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$nActiveX = GUICtrlCreateObj($oIE, 10, 10, @DesktopWidth - 120, @DesktopHeight - 150)
$nButton = GUICtrlCreateButton('Avtor', 10, @DesktopHeight - 135, 100, 30)
$nLabel = GUICtrlCreateLabel('Идет загрузка страницы...', 120, @DesktopHeight - 135, @DesktopWidth / 2, 30)
GUISetState()
GUISetState(@SW_DISABLE)
_IENavigate($oIE, 'http://ru.ikariam.com/')
GUISetState(@SW_ENABLE)
GUICtrlSetData($nLabel, 'Страница загружена :)')
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
Case $nButton
GUISetState(@SW_DISABLE)
GUICtrlSetData($nLabel, 'Идет авторизация...')
If _IEPropertyGet($oIE, 'locationurl') <> 'http://ru.ikariam.com/' Then
_IENavigate($oIE, 'http://ru.ikariam.com/')
EndIf
For $i = 1 To 1
$oBtn = _IEGetObjById($oIE, 'btn-login')
If @error Then ExitLoop
_IEAction($oBtn, 'click')
If @error Then ExitLoop
$oForm = _IEGetObjById($oIE, 'loginForm')
If @error Then ExitLoop
$oSelect = _IEGetObjById($oIE, 'logServer')
If @error Then ExitLoop
_IEFormElementOptionSelect($oSelect, $sWorld, 1, 'byText')
If @error Then ExitLoop
$oLogin = _IEFormElementGetObjByName($oForm, 'name')
If @error Then ExitLoop
$oPass = _IEFormElementGetObjByName($oForm, 'password')
If @error Then ExitLoop
_IEFormElementSetValue($oLogin, $sLogin)
If @error Then ExitLoop
_IEFormElementSetValue($oPass, $sPass)
If @error Then ExitLoop
_IEFormSubmit($oForm, 0)
If @error Then ExitLoop
Next
GUISetState(@SW_ENABLE)
If @error Then
GUICtrlSetData($nLabel, 'Ошибка')
Else
_IELoadWait($oIE)
GUICtrlSetData($nLabel, 'Авторизация прошла успешно.')
EndIf
EndSwitch
WEnd
$USER_LOGIN = ""
$USER_PASS = ""
$USER_SERVER = "s4.ru.ikariam.com" ;сервер = Delta
ConsoleWrite('http://'&$USER_SERVER&'/index.php?action=loginAvatar&function=login&uni_url='&$USER_SERVER&'&name='&$USER_LOGIN&'&password='&$USER_PASS&'&kid=&startPageShown=1&detectedDevice=1')
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
$USER_LOGIN = ""
$USER_PASS = ""
$USER_SERVER = "s4.ru.ikariam.com" ;сервер = Delta
ConsoleWrite('http://'&$USER_SERVER&'/index.php?action=loginAvatar&function=login&uni_url='&$USER_SERVER&'&name='&$USER_LOGIN&'&password='&$USER_PASS&'&kid=&startPageShown=1&detectedDevice=1')
$oIE = _IECreateEmbedded()
GUICreate("Embedded Web control Test", @DesktopWidth - 100, @DesktopHeight - 100, -1, -1, _
$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$nActiveX = GUICtrlCreateObj($oIE, 10, 10, @DesktopWidth - 120, @DesktopHeight - 150)
$nButton = GUICtrlCreateButton('Avtor', 10, @DesktopHeight - 135, 100, 30)
$nLabel = GUICtrlCreateLabel('Идет загрузка страницы...', 120, @DesktopHeight - 135, @DesktopWidth / 2, 30)
GUISetState()
GUISetState(@SW_DISABLE)
_IENavigate($oIE, 'http://'&$USER_SERVER&'/index.php?action=loginAvatar&function=login&uni_url='&$USER_SERVER&'&name='&$USER_LOGIN&'&password='&$USER_PASS&'&kid=&startPageShown=1&detectedDevice=1')
GUISetState(@SW_ENABLE)
GUICtrlSetData($nLabel, 'Страница загружена :)')
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
EndSwitch
WEnd
$USER_LOGIN = ""
$USER_PASS = ""
$USER_SERVER = "s4.ru.ikariam.com" ;сервер = Delta
ConsoleWrite('http://'&$USER_SERVER&'/index.php?action=loginAvatar&function=login&uni_url='&$USER_SERVER&'&name='&$USER_LOGIN&'&password='&$USER_PASS&'&kid=&startPageShown=1&detectedDevice=1')
$oRequest = ObjCreate('WinHttp.WinHttpRequest.5.1') ;Создаём COM-объект
If @error Then
MsgBox(16, 'Ошибка', 'Ошибка при создании объекта "WinHttp.WinHttpRequest.5.1".')
Exit 1
EndIf
$oErrorHandler = ObjEvent('AutoIt.Error', 'ErrorFunc')
$oRequest.Option(6) = False ;WinHttpRequestOption_EnableRedirects
$oRequest.Open('GET', 'http://'&$USER_SERVER&'/index.php?action=loginAvatar&function=login&uni_url='&$USER_SERVER&'&name='&$USER_LOGIN&'&password='&$USER_PASS&'&kid=&startPageShown=1&detectedDevice=1', 0)
$oRequest.SetRequestHeader('User-Agent', 'Testing')
$oRequest.Send()
$sData = $oRequest.ResponseText
ConsoleWrite($sData)
$oErrorHandler = 0 ;выключаем обработчик ошибок
Func ErrorFunc()
MsgBox(16, 'Ошибка', $oErrorHandler.description)
Exit 2
EndFunc