Добрый день извиняюсь за название темы если что не смог лучше придумать
Итак ближе к теме сейчас примерно обрисую
пример :
Собственно как мы видим из примера 2 структура документа меняется ,
и надо подождать когда все элементы обновятся но _IELoadWait он же $oIE.document.readyState
плевать хотел на это дело и говорит что все норм и скрипт летит дальше что неизбежно приведет к ошибкам
Вопрос к знатокам есть вариант решить эту проблему ? есть другая функция которая притормозит скрипт пока все элементы не обновятся?
нужен вариант что бы именно браузер вернул ответ что все новые элементы загружены
Варианты открывай новую вкладку всегда не прокатят
Жду ответа местных гуру ;D
Итак ближе к теме сейчас примерно обрисую
пример :
Код:
$oIE = _IECreate('https://www.yandex.ru/')
_IELoadWait($oIE)
; тут немного сократил индексы элементов сразу указал
$Form = _IEFormGetCollection($oIEj,0)
$Text = _IEFormElementGetCollection($Form,2)
$Buton = _IEFormElementGetCollection($Form,3)
_IEFormElementSetValue($oText,'1 вариант')
_IEAction($Buton,"focus")
_IEAction($Buton,"Click")
; тут все легко и просто проблема будет далее
;итак есть вкладка яндекса надо новый поиск в ней замутить
Код:
$aIEFrame = WinList('[CLASS:IEFrame]')
;_ArrayDisplay($aIEFrame)
$oIE = _IEAttach($aIEFrame[1][1],'Embedded')
;старый документ
ConsoleWrite('(' & @ScriptLineNumber & ') : $oIE.document.title = ' & $oIE.document.title & @CRLF)
;(54) : $oIE.document.title = 1 вариант — Яндекс: нашлось 474 млн ответов
$Form = _IEFormGetCollection($oIE,0)
$Text = _IEFormElementGetCollection($Form,1)
$Buton = _IEFormElementGetCollection($Form,0)
_IEFormElementSetValue($Text,'2 вариант')
_IEAction($Buton,"focus")
_IEAction($Buton,"Click")
if _IELoadWait($oIE) = 1 Then
ConsoleWrite('(' & @ScriptLineNumber & ') : Документ загружен 1'& @CRLF)
ElseIf _IELoadWait($oIE) = 0 Then
ConsoleWrite('(' & @ScriptLineNumber & ') : Документ грузится ожидаем 1'& @CRLF)
Sleep(10000)
EndIf
;(70) : Документ загружен 1
if StringCompare($oIE.document.readyState,'complete') = 0 Then
ConsoleWrite('(' & @ScriptLineNumber & ') : Документ загружен 2'& @CRLF)
ElseIf StringCompare($oIE.document.readyState,'complete') <> 0 Then
ConsoleWrite('(' & @ScriptLineNumber & ') : Документ грузится ожидаем 2'& @CRLF)
Sleep(10000)
EndIf
;(78) : Документ загружен 2
; новый документ обнуляем объект
$oIE = 0
$oIE = _IEAttach($aIEFrame[1][1],'Embedded')
if _IELoadWait($oIE) = 1 Then
ConsoleWrite('(' & @ScriptLineNumber & ') : Документ загружен 3'& @CRLF)
ElseIf _IELoadWait($oIE) = 0 Then
ConsoleWrite('(' & @ScriptLineNumber & ') : Документ грузится ожидаем 3'& @CRLF)
Sleep(10000)
EndIf
;(92) : Документ загружен 3
if StringCompare($oIE.document.readyState,'complete') = 0 Then
ConsoleWrite('(' & @ScriptLineNumber & ') : Документ загружен 4'& @CRLF)
ElseIf StringCompare($oIE.document.readyState,'complete') <> 0 Then
ConsoleWrite('(' & @ScriptLineNumber & ') : Документ грузится ожидаем 4'& @CRLF)
Sleep(10000)
EndIf
;(99) : Документ загружен 4
ConsoleWrite('(' & @ScriptLineNumber & ') : $oIE.document.title = ' & $oIE.document.title & @CRLF)
;(105) : $oIE.document.title = 1 вариант — Яндекс: нашлось 474 млн ответов
; итог ожидания не было и Титул документа вернулся старый так как новый Титул не успел загрузится
Собственно как мы видим из примера 2 структура документа меняется ,
и надо подождать когда все элементы обновятся но _IELoadWait он же $oIE.document.readyState
плевать хотел на это дело и говорит что все норм и скрипт летит дальше что неизбежно приведет к ошибкам
Вопрос к знатокам есть вариант решить эту проблему ? есть другая функция которая притормозит скрипт пока все элементы не обновятся?
нужен вариант что бы именно браузер вернул ответ что все новые элементы загружены
Варианты открывай новую вкладку всегда не прокатят
Жду ответа местных гуру ;D