Что нового

Сбои в работе скрипта для IE

TrustedCo

Новичок
Сообщения
15
Репутация
0
Добрый день коллеги! Хоть форум скорее мертв, чем жив, все же попробую спросить...

Написал скрипт для IE среднего размера и сложности, но столкнулся с тем, что он сбоит очень часто, то не видит элемент, то не нажимает кнопку, то не активирует окно, в большинстве случаев сделал цикличность чтобы долбил пока не найдет, но все равно ситуацию полностью не удается поправить, скажите это действительно такой сбойный механизм в принципе или это система (веб приложение) такая проблемная?

Заранее всем спасибо!
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Добрый день коллеги! Хоть форум скорее мертв, чем жив, все же попробую спросить...

Написал скрипт для IE среднего размера и сложности, но столкнулся с тем, что он сбоит очень часто, то не видит элемент, то не нажимает кнопку, то не активирует окно, в большинстве случаев сделал цикличность чтобы долбил пока не найдет, но все равно ситуацию полностью не удается поправить, скажите это действительно такой сбойный механизм в принципе или это система (веб приложение) такая проблемная?

Заранее всем спасибо!
В любом случае, лучше увидеть код, чтобы было понимание что именно вы используете и как
 
Автор
T

TrustedCo

Новичок
Сообщения
15
Репутация
0
В любом случае, лучше увидеть код, чтобы было понимание что именно вы используете и как
Да хотя бы вот этот кусок
Код:
$oIE = _IECreate("http://",0,1,1,1)
$hwnd = WinGetHandle("Вас приветствует")
WinActivate($hwnd)
WinWaitActive($hwnd, "", 20000)
$oLogin = _IEGetObjByName($oIE, 'username')
$oPass = _IEGetObjByName($oIE, 'password')
$oButton = _IEGetObjById($oIE, 'loginbutton')
_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)

В итоге страница открывается, а поля остаются пустыми...
Причем если выполнять с редактора, то такую проблему я получил только один раз, а если запускать скомпилированный код из под планировщика задач, то такой сбой часто возникает
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Да хотя бы вот этот кусок
Код:
$oIE = _IECreate("http://",0,1,1,1)
$hwnd = WinGetHandle("Вас приветствует")
WinActivate($hwnd)
WinWaitActive($hwnd, "", 20000)
$oLogin = _IEGetObjByName($oIE, 'username')
$oPass = _IEGetObjByName($oIE, 'password')
$oButton = _IEGetObjById($oIE, 'loginbutton')
_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)

В итоге страница открывается, а поля остаются пустыми...
Причем если выполнять с редактора, то такую проблему я получил только один раз, а если запускать скомпилированный код из под планировщика задач, то такой сбой часто возникает
А не пробовал, перед получением хендла окна , поставить его ожидание ?
Возможно он некорректно получает его.
Код:
$hwnd0 = WinWait("Вас приветствует")
$hwnd = WinGetHandle($hwnd0)
 
Автор
T

TrustedCo

Новичок
Сообщения
15
Репутация
0
А не пробовал, перед получением хендла окна , поставить его ожидание ?
Возможно он некорректно получает его.
Код:
$hwnd0 = WinWait("Вас приветствует")
$hwnd = WinGetHandle($hwnd0)
По логике
Код:
$oIE = _IECreate("http://",0,1,1,1)

Срабатывает _IELoadWait, что я полагаю равносильно WinWait, сейчас я решил попробовать отработать этот вариант, и сделать так чтобы если таймаут прошел, а объект после поисков еще не найден, то закрыть текущий экземпляр браузера и начать выполнение с самого начала, может так шансы повысятся, если просто ставить WinWait, то я могу просто уйти в завис
 

lettterssino

Знающий
Сообщения
109
Репутация
10
Она вроде как ожидает загрузки страницы, а не ожидает открытие браузера хендл которого вы получаете.
Код:
_IELoadWait
 
Автор
T

TrustedCo

Новичок
Сообщения
15
Репутация
0
Она вроде как ожидает загрузки страницы, а не ожидает открытие браузера хендл которого вы получаете.
Код:
_IELoadWait
Без окна нет и страницы, т.е. дождавшись загрузки страницы мы дождемся окно, с др. стороны окно без содержимого бесполезно в случае с web. Я вообще winactive везде поставил на случай если вдруг, во время выполнения скрипта будет какое-то сообщение которое перехватит фокус
 
Верх