Что нового

[Автоматизация] Не могу нажать пункт в меню на web странице

Boris

Дорогу осилит идущий
Сообщения
25
Репутация
0
Доброго времени суток уважаемые форумчане,
Неделю как начал изучать AutoIT для автоматизации IE приложения на JAVA. Столкнулся со следующей проблемой - на странице приложения в центре пустое поле с названием приложения, слева вертикальное меню, вверху горизонтальное - нужно вверху нажать на пункт меню "Расчет". Никак не получается. Реализовал эту задачу через SEND("{TAB}"), но не совсем устраивает - хотелось бы напрямую с объектами. Прошу помочь - подсказать где что делаю неправильно. Код такой:
Код:
<td valign="top"> <form action="/CommonWAR/faces/indexKS.jsp" name="commonwar" id="commonwar" target="_self" method="post"> <input type="submit" value=" Расчет " id="common" class="TableM"></input>
В AutoIT так:
Код:
$oInputs=_IETagNameGetCollection($oIE,'input')
For $oInput In $oInputs
	If $oInput.type='submit' And $oInput.id="common" Then
		_IEAction($oInput,"click")
		ExitLoop
	EndIf
Next
EndIf

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

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
#include <IE.au3>

Local $oIE = _IECreate("http://...")
Local $oForm = _IEFormGetObjByName($oIE, "commonwar")
_IEFormSubmit($oForm)
 
Автор
B

Boris

Дорогу осилит идущий
Сообщения
25
Репутация
0
Garrett сказал(а):
Код:
#include <IE.au3>

Local $oIE = _IECreate("http://...")
Local $oForm = _IEFormGetObjByName($oIE, "commonwar")
_IEFormSubmit($oForm)
Если я правильно понял проблема в корректной работе с формами.
По имени формы "commonwar" определяется ссылка на форму и по ней производится отправка формы на сервер для выполнения. Ввел эти коды в скрипт - но ничего не происходит.
Попробовал сделать так
Код:
_IEAction($oForm,"click")
то же тишина
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Boris
Дайте ссылку на сайт.
 
Автор
B

Boris

Дорогу осилит идущий
Сообщения
25
Репутация
0
Garrett сказал(а):
Boris
Дайте ссылку на сайт.
Эта программа не в свободном доступе - размещается на серверах предприятия в защищенной внутренней сети. Насколько я понял меню представляет из себя набор ссылок на формы. При загрузке выбранной формы вид страницы меняется с изменением подсветки пунктов меню. Возврат в основное меню по нажатию крайнего левого пункта. Вроде все просто, но на воздействие от autoit реакции нет.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Boris
Реализовал эту задачу через SEND("{TAB}")
Попробуйте перед кликом установить на элемент фокус ввода
Код:
_IEAction($oInput, "focus")
_IEAction($oInput, "click")
 
Автор
B

Boris

Дорогу осилит идущий
Сообщения
25
Репутация
0
InnI сказал(а):
Boris
Реализовал эту задачу через SEND("{TAB}")
Попробуйте перед кликом установить на элемент фокус ввода
Код:
_IEAction($oInput, "focus")
_IEAction($oInput, "click")
Проверил также реакции ноль. Дополнительно проверил наличие объектов input
Код:
If Not IsObj($oInputs) Then
	MsgBox(0,'','Объектов нет')
	Exit
else
    For $oInput In $oInputs
	If $oInput.type='submit' And $oInput.id="common" Then
                _IEAction($oInput, "focus")
		_IEAction($oInput,"click")
		ExitLoop
	EndIf
    Next
EndIf

объекты отсутствуют. Похоже что команда
Код:
$oInputs=_IETagNameGetCollection($oIE,'input')

не находит ничего. Скорее всего проблема в том что инпуты собираются в форме, где их нет. Всего на странице 3 формы с разными html кодами. Предполагаю что нужно перейти на нужную форму и там собрать инпуты. Правильно не правильно уважаемые форумчане подскажите как быть
 
Автор
B

Boris

Дорогу осилит идущий
Сообщения
25
Репутация
0
inververs сказал(а):
Может они во iframe?
Вполне может быть. С фреймами не работал. Как найти нужный фрейм перейти на него и найти в нем нужный объект?
 
Автор
B

Boris

Дорогу осилит идущий
Сообщения
25
Репутация
0
inververs сказал(а):
Победил я это дело. Действительно проблема была во фреймах. На странице их было три. Я нашел нужный мне фрейм вытащил объекты из него и нажал на нужный мне - все заработало!
Вод код:
Код:
$oFrame=_IEFrameGetCollection($oIE,2)
	$oObj = _IEGetObjById($oFrame,"здесь id объекта")
	_IEAction($oObj, "click")
Здесь под номером 2 в _IEFrameGetCollection($oIE,2) это номер нужного мне фрейма. ID объекта нашел просто - тупо скачал код страницы в блокнот и стал удалять последовательно строчку за строчкой каждый раз выполняя код и смотря какие объекты остаются пока не вышел на нужную мне кнопку. :IL_AutoIt_1:
 
Верх