Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как нажать на ява-кнопку

Ответить
Настройки темы
[решено] Как нажать на ява-кнопку

Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: zbruy
Дата: 09-10-2009
Простите за тупой вопрос, как съэмулиповать нажатие такой кнопки?:
<td><a href="javascript:document.loginForm.submit();"><img src="http://www.сайт.ru/assets/image/button_small-trans.png"></a></td>
Ну тоесть используем скажем конструкцию:
$oIE = _IECreate (" http://www.сайт.ru/")
_IELoadWait ($oIE)
$oUser =_IEGetObjByName($oIE,"login")
$oPass =_IEGetObjByName($oIE,"password")
_IEFormElementSetValue ($oUser, 'ник')
_IEFormElementSetValue ($oPass, 'пароль')
и натыкаемся на вышеописанную кнопку, как ее в итоге нажать? А то помучился, но так и не сообразил

Отправлено: 01:18, 05-10-2009

 

Аватара для Medic84

$AutoITer


Автор проектов


Сообщения: 446
Благодарности: 44

Профиль | Отправить PM | Цитировать


_IEFormSubmit

-------

AutoIT Русское сообщество| Моя лаборатория

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:59, 05-10-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
_IEFormSubmit
и как ее этой функцией привентить?

Отправлено: 00:53, 06-10-2009 | #3


Старожил


Сообщения: 186
Благодарности: 4

Профиль | Отправить PM | Цитировать


Пожалуй, вот так:
Код: Выделить весь код
$oIE = _IECreate (" http://www.сайт.ru/") 
_IELoadWait ($oIE) 
$Form=_IEFormGetObjByName($oIE,"loginForm"); насколько я понял, в данном примере форма называется loginForm, хотя в каждом случае отдельно смотреть надо название формы
$oUser =_IEGetObjByName($Form,"login") 
$oPass =_IEGetObjByName($Form,"password") 
_IEFormElementSetValue ($oUser, 'ник') 
_IEFormElementSetValue ($oPass, 'пароль')
_IEFormSubmit($Form)
Если что-то не получится, дайте название сайта, посмотрим
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:41, 06-10-2009 | #4


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ага, спасибо, сделал уже вчера, как-то так..:

Код: Выделить весь код
#include <IE.au3>
Opt("TrayIconDebug",1)
$oIE = _IECreate (" http://www.сайт.ру")
$oUser =_IEGetObjByName($oIE,"login")
If @Error = 0 Then
_IELoadWait ($oIE)
$oSubmit = _IEGetObjByName ($oIE,"loginForm")
$oUser =_IEGetObjByName($oIE,"login")
$oPass =_IEGetObjByName($oIE,"password")
_IEFormElementSetValue ($oUser, 'ник') 
_IEFormElementSetValue ($oPass, 'йцукен') 
_IEFormSubmit ($oSubmit, "click") 
EndIf

Последний раз редактировалось zbruy, 21-10-2009 в 14:37.


Отправлено: 11:22, 06-10-2009 | #5


Старожил


Сообщения: 186
Благодарности: 4

Профиль | Отправить PM | Цитировать


Если нет иных ссылок, имеющих статическую часть "http://192.168.12.158/infa1", можно так:
Код: Выделить весь код
#include <IE.au3>
Opt("TrayIconDebug",1)
$oIE = _IECreate (" http://www.сайт.ру")
$Links=_IELinkGetCollection($oIE)
for $Link in $Links
if StringInStr(_IEPropertyGet($Link,"innerhtml"),"http://192.168.12.158/infa1")<>0 then
$Link.click
exitloop
endif
next
Либо если текст ссылки всегда постоянен, можно так:
Код: Выделить весь код
#include <IE.au3>
Opt("TrayIconDebug",1)
$oIE = _IECreate (" http://www.сайт.ру")
$Links=_IELinkGetCollection($oIE)
for $Link in $Links
if _IEPropertyGet($Link,"innertext")=="текст ссылки" then
$Link.click
exitloop
endif
next

Отправлено: 18:31, 06-10-2009 | #6


Старожил


Сообщения: 186
Благодарности: 4

Профиль | Отправить PM | Цитировать


В первом скрипте все ссылки перебираются по очереди. Если программа определяет, что в текущей ссылке имеется кусок "http://192.168.12.158/infa1", она кликнет по этой ссылке, каким бы ни было продолжение.

Во втором примере вам нужно знать текст ссылки (то, что на ней написано). Программа определяет нужную ссылку, исходя из текста, а не URL-адреса, на который эта ссылка отсылает.

Отправлено: 21:16, 06-10-2009 | #7


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


evg64, да, но ведь изначально кусок ссылки "http://192.168.12.158/infa1" в коде страницы не указывается, там есть только '?response=3&info=12' кусок. Поэтому скрипт ничего не найдет. Мысль я понял. Но простой поиск даже если я буду искать скажем по шаблону ?response=3&info= найти то он найдет, затем нужно эту ссылочку собрать, чтобы по ней перейти

Отправлено: 22:49, 06-10-2009 | #8


Старожил


Сообщения: 186
Благодарности: 4

Профиль | Отправить PM | Цитировать


хх - две цифры?
Тогда:
Код: Выделить весь код
#include <IE.au3>
$FinalLink=""
$LinkFound=0
Opt("TrayIconDebug",1)

$oIE = _IECreate (" http://www.сайт.ру")
$Links=_IELinkGetCollection($oIE)
for $Link in $Links
if StringInStr(_IEPropertyGet($Link,"innerhtml"),"?response=0&info=")<>0 then ; находим ссылку с частью "?response=0&info=", насколько я понял, она на странице одна-единственная
	for $i=0 to 99; начинаем перебирать варианты от 00 до 99
	$LinkPart="?response=0&info="&$i
	if $i<10 then $LinkPart="?response=0&info=0"&$i
	if _IEPropertyGet($Link,"innerhtml")==$LinkPart then ; если есть совпадение, значит компонуем финальную ссылку в следующей строке и выходим из циклов
	$FinalLink="http://192.168.12.158/infa1"&$LinkPart
	$LinkFound=1
	exitloop
	endif	
	next
endif
if $LinkFound then exitloop
next
msgbox(0,"Искомая ссылка:",$FinalLink)
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:14, 07-10-2009 | #9


Аватара для Sp01LeR

Пользователь


Сообщения: 60
Благодарности: 13

Профиль | Отправить PM | Цитировать


Она бы подошла если б сразу написать пример исходного URL. Вот, подкорректированный рабочий вариант(ищет и помещает в массив результатов только первую ссылку):

Код: Выделить весь код
#include <IE.au3>
#include <INet.au3>
#include <Array.au3>

Dim $prot = "http://"
Dim $domen = "192.168.12.158"
Dim $delim = "/"
Dim $s_get = "infa1"
Dim $s_page = "index.html"
;Dim $browser = "iexplore.exe"

$get_data = _INetGetSource($domen&$delim&$s_get)


If @Error = 1 Then
	MsgBox(16, "Error", "Не могу загрузить страницу!")
	Exit
Else
	MsgBox(4096, "Ok!", "Загружено: "&StringLen($get_data)&" байт")
EndIf

$qts = "['""]"
$prs_data = "<a.*href="&$qts&"(\?response=0&info=[0-9]+)"&$qts& _
".*>(.[^><]*)</a><br/><br/>"
$prs_arr = StringRegExp($get_data, $prs_data, 1)

If UBound($prs_arr) > 0 Then
	_ArrayDisplay( $prs_arr, "Результаты поиска:" )
	_IECreate ($prot&$domen&$delim&$s_get&$prs_arr[0])
Else
	MsgBox(16, "RegExp Error", "Ошибка поиска по шаблону. Код ошибки="&@error)
EndIf
В строке:
Код: Выделить весь код
Dim $s_page = "index.html"
"index.html" нужно заменить на страницу с сылками.

Последний раз редактировалось Sp01LeR, 07-10-2009 в 15:50.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:04, 07-10-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как нажать на ява-кнопку

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Помогите нажать на хитрую кнопку hamas AutoIt 9 06-01-2010 11:32
[решено] Как нажать flash (флеш) кнопку? uninstall AutoIt 1 16-11-2009 12:20
Как нажать на ява ссылку? olehis AutoIt 1 14-10-2009 20:10
[решено] как можно нажать CTRL+ALT+Del одновременно alexey_a AutoIt 11 14-04-2009 17:49
[решено] Как кликнуть на кнопку в IE r35TnX AutoIt 2 10-03-2009 20:23




 
Переход