Что нового

[Ошибки] (1900) : ==> The requested action with this object has failed.:

Сообщения
119
Репутация
-6
В процессе выполнения скрипта появляются некритичные предупреждения и ошибки, а позже скрипт вообще отваливается, причём 1900 строки у меня нет, как и нет такой же строки. Я догадываюсь, что так как до этого присутствует переход на новую страницу, то по каким-то причинам переход не выполняется, и скрипт начинает чудить. Пока не удалось отловить причину, поэтому попробую что-то теоретическое. Ловить заголовок окна не предлагать - он не меняется.
Код:
; сам участок скрипта
_IEAction($oPressButton, "click")
_IELoadWait($oIE)
; тут мы должны оказаться на другой странице
$oConfirmButton = _IEGetObjById($oIE, "confirm_button")
_IEAction($oConfirmButton, "click")

; лог выполнения
--> IE.au3 T3.0-2 Warning from function _IEGetObjById, $_IESTATUS_NoMatch (confirm_button)
--> IE.au3 T3.0-2 Error from function _IEAction(click), $_IESTATUS_InvalidDataType
"C:\Program Files (x86)\AutoIt3\Include\IE.au3" (1900) : ==> The requested action with this object has failed.:
If IsObj($oObject.document.getElementById($sID)) Then
If IsObj($oObject.document^ ERROR
>Exit code: 1    Time: 224.1
 

gunter123

Продвинутый
Сообщения
146
Репутация
60
Это 1900 строка не вашего скрипта, а библиотеки IE.au3. В консоли пишет, что вашего объекта с id=troop_confirm_go не существует, поэтому скрипт на него не кликает, и поэтому дальше он уже не находит document.getElementById($sID)
 
Автор
Э
Сообщения
119
Репутация
-6
gunter123 сказал(а):
Это 1900 строка не вашего скрипта, а библиотеки IE.au3. В консоли пишет, что вашего объекта с id=troop_confirm_go не существует, поэтому скрипт на него не кликает, и поэтому дальше он уже не находит document.getElementById($sID)
Это не решает проблему. Понятно, что не находит, я об этом и писал.

Как отловить, что происходит до того, как ошибка падает? Вести лог?
 

gunter123

Продвинутый
Сообщения
146
Репутация
60
Для начала проверьте код страницы через _IEBodyReadHTML, если в коде нет искомого элемента, но на самой странице он есть, можно попробовать заново "прицепиться" к браузеру:

Код:
While Sleep(200)                ; Пока на странице нет элемента с id=troop_confirm_go, аттачимся к браузеру
    $oPressButton = $oIE.document.getElementById('troop_confirm_go')
    If IsObj($oPressButton) Then ExitLoop
    $oIE = _IEAttach(Default, 'instance')
Wend
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 243
Репутация
2 345
gunter123 [?]
Для начала проверьте код страницы через _IEBodyReadHTML
Я бы посоветовал использовать инструменты разработчика в браузере (F12 в Chrome) для тестирования страницы и её элементов.
Там можно отследить что где и когда появляется на странице.
 
Автор
Э
Сообщения
119
Репутация
-6
CreatoR сказал(а):
gunter123 [?]
Для начала проверьте код страницы через _IEBodyReadHTML
Я бы посоветовал использовать инструменты разработчика в браузере (F12 в Chrome) для тестирования страницы и её элементов.
Там можно отследить что где и когда появляется на странице.
Скрипт падает в моё отсутствие. При мне он выполняется успешно. Вариант у меня один. Происходит непредвиденное.


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

gunter123 сказал(а):
Для начала проверьте код страницы через _IEBodyReadHTML, если в коде нет искомого элемента, но на самой странице он есть, можно попробовать заново "прицепиться" к браузеру:

Код:
While Sleep(200)                ; Пока на странице нет элемента с id=troop_confirm_go, аттачимся к браузеру
    $oPressButton = $oIE.document.getElementById('troop_confirm_go')
    If IsObj($oPressButton) Then ExitLoop
    $oIE = _IEAttach(Default, 'instance')
Wend
И если он не появится, скрипт останется сидеть на этом участке. :whistle: Я исправил первое сообщение, потому что ты явно введен заблуждение.




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

Я сделал проверку по url после LoadWait, которая при совпадении со старым применяет ContinueLoop. Не прокатило. Следовательно переход есть. Ладно, буду выкидывать html в лог файл.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 243
Репутация
2 345
ЭйчЭйч [?]
Происходит непредвиденное
Чтобы это не происходило, нужно хорошенько изучить работу страницы на которой выполняется автоматизация, для этого я и посоветовал использовать инструменты разработчика.
 
Автор
Э
Сообщения
119
Репутация
-6
Дело не в коде страницы. Сегодня встало на ровном месте.
 
Автор
Э
Сообщения
119
Репутация
-6
Добавил директиву на 64-битный AutoIt. Стал использовать
Код:
$oIE.document.getElementById('id')

Теперь меня радует ошибка в тех же строках, но уже с другим пояснением. Когда прихожу к компьютеру, скрипт стоит как раз там, где он должен был найти элемент, и элемент есть. :blink:

Ошибку позже добавлю.


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

Может причина быть в том, что компьютер тушит экран, появляется заставка, а при пробуждении требуется ввести пароль, т.е. по сути происходит блокировка.

Код:
(141) : ==> The requested action with this object has failed.:
If IsObj($oIE.document.getElementsByClassName('className')) Then
If IsObj($oIE.document^ ERROR
 
Верх