Что нового

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

TrustedCo

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

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

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

lettterssino

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

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

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

TrustedCo

Новичок
Сообщения
8
Репутация
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

Новичок
Сообщения
57
Репутация
4
Да хотя бы вот этот кусок
Код:
$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

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

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

lettterssino

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

TrustedCo

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