Всем доброго дня.
Прошу помощи в решении моей проблемы.
При автоматизации страницы в IE требуется выполнить элементарное действие - нажать на кнопку, которая имеет следующий код (привожу маленький кусок из всей страницы):
Собственно саму кнопку идентифицирую по значению "change_downStatus" для аттрибута "name".
Для клика по объектам написал функцию, куда в качестве аргументов передаем тег, имя аттрибута и значение аттрибута. За стиль написания сразу прошу прощения :-[ рефакторинг будет после того как это чудо заработает. Итак, сама функция:
Внутри этой функции используется функция получения коллекции объектов, вот она:
При использовании этих функций проблем не возникало, пока я не добрался до кнопки указанной в начале темы. Теперь судя по логам скрипт доходит до:
"24.11.2010 17:33:45","DEBUG","Не выполнен клик мышкой с таргетингом по аттрибуту для IE ","Library: \lib\ie\gui_ie.au3, Function: lib_gui_ie_ObjectClick_ByAttribute, $sTag: input $sAttribute: name $sAttrValue: change_downStatus"
и далее AutoIt висит без падений и сообщений об ошибке в трее. Сломал голову от чего может быть такое зависание.
Прошу помощи в решении моей проблемы.
При автоматизации страницы в IE требуется выполнить элементарное действие - нажать на кнопку, которая имеет следующий код (привожу маленький кусок из всей страницы):
Код:
<tr>
<td>downStatus</td>
<td></td>
<td>OFF</td>
<td>
<form method="post" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="cstatus" value="downStatus" />
<input type="submit" name="change_downStatus" value="Изменить" onclick="return confirm('изменить статус downStatus? Вы уверены?');" />
</form>
</td>
</tr>
Собственно саму кнопку идентифицирую по значению "change_downStatus" для аттрибута "name".
Для клика по объектам написал функцию, куда в качестве аргументов передаем тег, имя аттрибута и значение аттрибута. За стиль написания сразу прошу прощения :-[ рефакторинг будет после того как это чудо заработает. Итак, сама функция:
Код:
;-----------------------------------------------------
;Клик мышкой с таргетингом по аттрибуту
;-----------------------------------------------------
Func lib_gui_ie_ObjectClick_ByAttribute($sTag, $sAttribute, $sAttrValue)
Log_Write(4, "Клик мышкой с таргетингом по аттрибуту для IE ", "Library: \lib\ie\gui_ie.au3, Function: lib_gui_ie_ObjectClick_ByAttribute, $sTag: " & $sTag & "$sAttribute: " & $sAttribute & "$sAttrValue: " & $sAttrValue)
Local $oInputs = lib_gui_ie_GetCollection_ByTag($sTag)
For $oInput In $oInputs
Log_Write(4, "Получено значение '" & $oInput.getAttribute($sAttribute) & "' для аттрибута '" & $sAttribute & "' ", "Library: \lib\ie\gui_ie.au3, Function: lib_gui_ie_ObjectClick_ByAttribute")
If $oInput.getAttribute($sAttribute) == $sAttrValue Then
Log_Write(4, "Не выполнен клик мышкой с таргетингом по аттрибуту для IE ", "Library: \lib\ie\gui_ie.au3, Function: lib_gui_ie_ObjectClick_ByAttribute, $sTag: " & $sTag & "$sAttribute: " & $sAttribute & "$sAttrValue: " & $sAttrValue)
_IEAction($oInput, "click")
Log_Write(4, "Выполнен клик мышкой с таргетингом по аттрибуту для IE ", "Library: \lib\ie\gui_ie.au3, Function: lib_gui_ie_ObjectClick_ByAttribute, $sTag: " & $sTag & "$sAttribute: " & $sAttribute & "$sAttrValue: " & $sAttrValue)
EndIf
Next
EndFunc
Внутри этой функции используется функция получения коллекции объектов, вот она:
Код:
;---------------------------------------------------------
;Получение коллекции объектов по заданному тегу
;---------------------------------------------------------
Func lib_gui_ie_GetCollection_ByTag($sTag)
Log_Write(4, "Получение коллекции по Tag для IE ", "Library: \lib\ie\gui_ie.au3, Function: lib_gui_ie_GetCollection_ByTag, $sTag: " & $sTag)
Local $oInputs
Do
$oInputs = _IETagNameGetCollection($oIE, $sTag)
Until @error=0
Return $oInputs
EndFunc
При использовании этих функций проблем не возникало, пока я не добрался до кнопки указанной в начале темы. Теперь судя по логам скрипт доходит до:
"24.11.2010 17:33:45","DEBUG","Не выполнен клик мышкой с таргетингом по аттрибуту для IE ","Library: \lib\ie\gui_ie.au3, Function: lib_gui_ie_ObjectClick_ByAttribute, $sTag: input $sAttribute: name $sAttrValue: change_downStatus"
и далее AutoIt висит без падений и сообщений об ошибке в трее. Сломал голову от чего может быть такое зависание.