Что нового

[Сеть, интернет] Кликнуть на чекбокс, у которого нет value

tyukas

Новичок
Сообщения
5
Репутация
0
Всем доброго времени суток..
По форуму искала, но найти ответа не получилось.
Необходимо нажать на одиночный чекбокс, но функция _IEFormElementCheckBoxSelect не работает, т.к. нет value.
вот фрагмент кода:
Код:
 <input id="ctl00_ctl00_ctl00_MainContent_LeftContent_mainContent_CheckBoxNotify" type="checkbox" name="ctl00$ctl00$ctl00$MainContent$LeftContent$mainContent$CheckBoxNotify">

Может есть другие аналоги? как ткнуть в этот одиночный чекбокс.. По координатам -точно не подойдет.. скрипт должен будет отработать не на моей машине...

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

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
_IEFormElementCheckboxSelect ($oForm, "0", "ctl00_ctl00_ctl00_MainContent_LeftContent_mainContent_CheckBoxNotify", 1, "byIndex")
 
Автор
T

tyukas

Новичок
Сообщения
5
Репутация
0
Спасибо огромное, работает!
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Up!
Возникла похожая проблема и дабы не плодить темы задам вопрос тут:
Есть следующий код:
Код:
#include <ie.au3>
$sRefUrl = "http://db.tt/H4H6GqG8"
$sFirstName = "Peter"
$sLastName = "Stevens"
$sEmail = "[email protected]"
$sPassword = "12345678"

$oDropBoxPage = _IECreate($sRefUrl); открываем реферальную ссылку в IE
$oForm = _IEFormGetObjByName($oDropBoxPage, "Что тут писать?"); не знаю что тут писать если нет <form>
; получаем объекты Input'ов
$oFirstName = _IEGetObjByName($oDropBoxPage, "fname") ; имя
$oLastName = _IEGetObjByName($oDropBoxPage, "lname") ; фамилия
$oEmail = _IEGetObjByName($oDropBoxPage, "email") ; почта
$oPassword = _IEGetObjByName($oDropBoxPage, "password") ; пароль
; Ставим значения в Input`ы
_IEFormElementSetValue($oFirstName, $sFirstName)
_IEFormElementSetValue($oLastName, $sLastName)
_IEFormElementSetValue($oEmail, $sEmail)
_IEFormElementSetValue($oPassword, $sPassword)
_IEFormElementCheckBoxSelect ($oForm, 5, "tos_agree", 1, "byIndex")

Не могу установить чекбокс.
Исходный код: <input type="checkbox" name="tos_agree" id="tos_agree" tabindex="5"/>
И ещё мне не понятно что писать в _IEFormGetObjByName и зачем оно нужно ($oForm)?
Почему нельзя использовать объект $oIE (в моём случае $oDropBoxPage)?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Это не надо
Код:
$oForm = _IEFormGetObjByName($oDropBoxPage, "Что тут писать?"); не знаю что тут писать если нет <form>


Что бы нажать
Код:
$oCheck = _IEGetObjByName($oDropBoxPage, "tos_agree") ; чекбокс
$oCheck.checked = True
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ynbIpb,
Попробуйте так.
Код:
#include <IE.au3>

$sRefUrl = "http://db.tt/H4H6GqG8"
$sFirstName = "Peter"
$sLastName = "Stevens"
$sEmail = "[email protected]"
$sPassword = "12345678"
$iError = 1
$oIE = _IECreate($sRefUrl)
For $i = 1 To 1
	$oForms = _IEFormGetCollection($oIE)
	If @error Then ExitLoop
	For $oForm In $oForms
		If $oForm.method == 'post' And $oForm.action = '' Then
			$oFN = _IEFormElementGetObjByName($oForm, 'fname')
			If @error Then ExitLoop
			$oLN = _IEFormElementGetObjByName($oForm, 'lname')
			If @error Then ExitLoop
			$oEM = _IEFormElementGetObjByName($oForm, 'email')
			If @error Then ExitLoop
			$oPW = _IEFormElementGetObjByName($oForm, 'password')
			If @error Then ExitLoop
			_IEFormElementSetValue($oFN, $sFirstName)
			If @error Then ExitLoop
			_IEFormElementSetValue($oLN, $sLastName)
			If @error Then ExitLoop
			_IEFormElementSetValue($oEM, $sEmail)
			If @error Then ExitLoop
			_IEFormElementSetValue($oPW, $sPassword)
			If @error Then ExitLoop
			$oChB = _IEFormElementGetObjByName($oForm, 'tos_agree')
			If @error Then ExitLoop
			_IEAction($oChB, 'click')
			If @error Then ExitLoop
			_IEFormSubmit($oForm)
			If @error Then ExitLoop
			$iError = 0
			ExitLoop 2
		EndIf
	Next
Next
If $iError Then
	_IEQuit($oIE)
	Exit -33
Else
	MsgBox(64, 'Info', 'OK')
EndIf
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
inververs, madmasles, благодарю за помощь.
И ещё в догонку вопрос: После нажатия кнопки "Создать аккаунт" нужно убедиться, что он действительно создался. Моя видимость этого такая:
Код:
_IELoadWait ($oDropBoxPage); ожидаем загрузки страницы
$sBodyText = _IEBodyReadText ($oDropBoxPage) ; читаем текст со страницы
; ищем в тексте уникальный текст, свидетельствующий о успешности

Нормально ли это или есть какой другой способ?
 
Верх