Что нового

Autoit вылетает с ошибкой при автоматизации IE11

joker2d

Новичок
Сообщения
182
Репутация
0
Мой скрипт AutoIt работает с IE11 в цикле и через некоторое время почему то вылетает с ошибкой (в IE8 тестил вроде все ок но он в любом случае не подходит)
использую
Код:
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

для отлова всех ошибок

вот код для примера поля custom-confirmation не существует сделал специально для демонстрации более быстрого срабатывания ошибки
Код:
#include <IE.au3>

$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") ; 
$i=0
While 1
	$i=$i+1
	TrayTip("", $i, 9999)

	$oIE = _IECreate()
	_IENavigate($oIE, "https://www.ixbt.com", 0)
	_IELoadWait($oIE, 0, 90000)
	
	$v_pole = _IEGetObjById($oIE, 'custom-confirmation')	
	_IEAction($v_pole, "focus")
	Sleep(1000)	
	ProcessClose("iexplore.exe")	
WEnd


При ошибке в консоль ничего не пишеться вылетает такое окно
http://clip2net.com/s/3ldQuPM

текст из окна
Problem signature:
Problem Event Name: APPCRASH
Application Name: autoit3.exe
Application Version: 3.3.14.0
Application Timestamp: 559f936f
Fault Module Name: OLEAUT32.dll
Fault Module Version: 6.1.7601.17514
Fault Module Timestamp: 4ce7b972
Exception Code: c0000005
Exception Offset: 0004d4ae
OS Version: 6.1.7601.2.1.0.256.4
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

раньше для всех ошибок использовал IEErrorHandlerRegister() и таких проблем не было
да и в консоле SciTE постоянно идут сообщения

--> IE.au3 T3.0-2 Warning from function internal function __IEIsObjType, Cannot register internal error handler, cannot trap COM errors (Use _IEErrorHandlerRegister() to register a user error handler)
--> IE.au3 T3.0-2 Warning from function internal function __IEIsObjType, Cannot register internal error handler, cannot trap COM errors (Use _IEErrorHandlerRegister() to register a user error handler)

Хотя _IEErrorHandlerRegister() вроде бы уже удалили и его использовать нельзя
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
и еще вот так вылетает
пишет в консоль

"C:\Program Files\AutoIt3\Include\IE.au3" (1899) : ==> The requested action with this object has failed.:
If IsObj($oObject.document.getElementById($sID)) Then
If IsObj($oObject.document^ ERROR
>Exit code: 1 Time: 513

Но почему ? я думал что $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") должна все ошибки поймать
как тогда сделать чтоб в любом случае скрипт не завершался ?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Какая версия autoit?


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

А вижу 3.3.14.0


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

В нее похоже перешли все баги из 3.3.13.21. Разработчики с COM пошаманили, теперь работа с объектами - игра с огнем. Все ошибки критические. Необходимо использовать ObjEvent("AutoIt.Error", "MyErrFunc"), но как вы видите не помогает, вылетает по другой причине.

Я поэтому не обновляюсь :smile:

Попробуйте в начало скрипта добавить ObjEvent(... и вот эту строку: DllCall("ole32.dll", "long", "OleInitialize", "ptr", 0)
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
inververs

Код:
ObjEvent(DllCall("ole32.dll", "long", "OleInitialize", "ptr", 0))

Вот так добавил вначале скрипта но все равно вылетает
А какая версия аутоит стабильная и с _IEErrorHandlerRegister ?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
joker2d :D не так сделан, ну да ладно.
 
Верх