Что нового

[Сеть, интернет] Как заполнить форму с помощью _IEFormElementSetValue

Yura-H2O

Новичок
Сообщения
35
Репутация
0
Код:
#include <IE.au3>
$oIE = _IECreate ("https://passport.i.ua/")
$oInputs = _IETagNameGetCollection ($oIE, "input")
_IEFormElementSetValue ($oInputs, "Логин")


В чем моя ошибка? И как мне заполнить форму?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: [Сеть, интернет] Вопрос по input

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Сеть, интернет] Вопрос по input" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.










и напиши какая ошибка возникает при запуске скрипта. и еще тут тебя знающие наверняка попросят код самой страницы, если код по идее должен нормально сработать. так что не дожидаясь выложи сам. ну и напоследок обращай внимания на разделы в котором создаешь темы.
 
Автор
Y

Yura-H2O

Новичок
Сообщения
35
Репутация
0
Re: [Сеть, интернет] Вопрос по input

Код:
<form name="rform" method="post" onsubmit="return rform_validate(this);"><input type="hidden" name="_subm" value="rform" /><input type="radio" name="type" value="1" checked="checked" style="display: none;" /><input type="hidden" name="socialUserInfo" value="" /><input type="hidden" name="socialKey" value="" /><input type="hidden" name="soc_email" value="" /><input type="hidden" name="crg" value="" /><input type="hidden" name="ppc" value="1291721964" /><input type="hidden" name="ct" value="1361947800.576136c6f92fb3ba2dcb915357c82f18" /><ul class="navigation_tabs clear">
	<li onclick="chType(1, this);" class="current">
		<span>Зарегистрировать
почтовый ящик:
<b class="mail">@i.ua</b>, <b class="mail">@ua.fm</b>, <b class="mail">@email.ua</b></span>
	</li>
	<li onclick="chType(2, this);">
		<span>Использовать
имеющийся e-mail
<img src="/v2/ico/share/share_mailru_24.png" /><img src="/v2/ico/share/share_gmail_24.png" /><img src="/v2/ico/share/share_yandex_24.png" /><img src="/v2/ico/share/share_email_24.png" /></span>
	</li>
	<li onclick="chType(3, this);">
		<span>Зарегистрироваться
через соцсеть

<img src="/v2/ico/share/share_facebook_24.png" title="Facebook" /><img src="/v2/ico/share/share_vkontakte_24.png" title="Vkontakte" /><img src="/v2/ico/share/share_twitter_24.png" title="Twitter" /><img src="/v2/ico/share/share_googleplus_24.png" title="Google+" /><img src="/v2/ico/share/share_yandex_24.png" title="Yandex" />		</span>
	</li>
</ul>

<div class="block_alert" id="rform_errCtrl" style="display: none"><div class="content clear"></div><div class="tl"></div><div class="tr"></div><div class="br"></div><div class="bl"></div></div><p id="type_errCtrl" style="display: none" class="error"><span></span></p>
<table class="form">

<tr id="reg_soc_btn" style="display: none;">
	<td class="field_title"></td>
	<td>
		<p>Если Вы зарегистрированы в одной из социальных сетей, кнопочки которых Вы видите ниже, то нажмите на нее.</p>
		<p>
<span class="facebook_connect" onclick="socialClick(1, 'https://graph.facebook.com/oauth/authorize?client_id=370687779622642&redirect_uri=https%3A%2F%2Fpassport.i.ua%2FsocialRedirectPoint%2F1%2FprocessAuth%2FforRegistration%2F&scope=email%2Cuser_birthday&response_type=code&state=---5228915f');"></span><span class="vkontakte_connect" onclick="socialClick(2, 'https://oauth.vk.com/authorize?client_id=2891619&redirect_uri=https%3A%2F%2Fpassport.i.ua%2FsocialRedirectPoint%2F2%2FprocessAuth%2FforRegistration%2F&scope=friends%2Cwall&response_type=code&state=---5228915f');"></span><span class="twitter_connect" onclick="socialClick(3, 'https://passport.i.ua/socialRedirectPoint/3/redirectToAuth?_redirectTo=https%3A%2F%2Fpassport.i.ua%2FsocialRedirectPoint%2F3%2FprocessAuth%2FforRegistration%2F');"></span><span class="googleplus_connect" onclick="socialClick(4, 'https://accounts.google.com/o/oauth2/auth?client_id=136453988744.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fpassport.i.ua%2FsocialRedirectPoint%2F4%2FprocessAuth%2FforRegistration%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.me+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&response_type=code&state=---5228915f');"></span><span class="yandex_connect" onclick="socialClick(6, 'https://oauth.yandex.ru/authorize?client_id=002976a796d64538b9f162e9779747d8&redirect_uri=https%3A%2F%2Fpassport.i.ua%2FsocialRedirectPoint%2F6%2FprocessAuth%2FforRegistration%2F&scope=&response_type=code&state=---5228915f');"></span>		</p>
	</td>
</tr>

<tr id="reg_radio" style="display: none;">
	<td class="field_title"></td>
	<td>
				<fieldset class="navigation_tabs">
			<h4>Регистрация через Соцсеть</h4>
			<big>
				<label style="display: none;"><input type="radio" name="login_alternate" value="3" onclick="chType(3);" id="label_login_alternate_3" /> использовать <b></b>
</label>
				<label><input type="radio" name="login_alternate" value="1" checked="checked" onclick="chType(3);" id="label_login_alternate_1" /> зарегистрировать короткий ящик <b>@i.ua</b></label>

				<label><input type="radio" name="login_alternate" value="2" onclick="chType(3);" id="label_login_alternate_2" /> использовать имеющийся e-mail</label>
			</big>
		</fieldset>
	</td>
</tr>
<tbody id="reg_form">
<tr id="reg_login">
	<td class="field_title">Ваш логин</td>
	<td>
		<p id="ff78764_errCtrl" style="display: none" class="error"><span></span></p><p id="domn_errCtrl" style="display: none" class="error"><span></span></p>		<div class="necessary"><input type="text" name="f0af424" value="" onkeyup="doLoadUp();" class="width_25" style="display:none" maxlength="20" /><input type="text" name="f44ad88" value="" onkeyup="doLoadUp();" class="width_25" style="display:none" maxlength="20" /><input type="text" name="ff78764" value="" onkeyup="doLoadUp();" class="width_25" style="display:none" maxlength="20" /><select name="domn" onchange="doLoadUp();"><option value="i.ua">i.ua</option><option value="ua.fm">ua.fm</option><option value="email.ua">email.ua</option></select></div>
		<p class="field_description">максимальная длина: 20 символов ("a&ndash;z", "A&ndash;Z", "0&ndash;9", "-", "_", "."), должен начинаться и заканчиваться буквой или цифрой</p>

		<p>Ваш электронный адрес будет выглядеть так:</p>
		<h4 class="title"><big id="beMail">ваш логин@i.ua</big> <span id="sms_email" style="display: none;">&mdash; <a href="http://mail.i.ua/mobile/">хотите занять этот e-mail?</a></span><span id="short_email" style="display: none;">&mdash; <a href="http://mail.i.ua/short/">хотите занять этот e-mail?</a></span></h4>
	</td>
</tr>

А выдает мне
Код:
IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidObjectType




Добавлено:
Сообщение автоматически объединено:

Уже и так пробовал
Код:
#include <IE.au3>
$oIE = _IECreate ("https://passport.i.ua/")
$o_form = _IEFormGetObjByName ($oIE, "rform")
$o_login = _IEFormElementGetObjByName ($o_form, "f2dde8f")
$username = "my username here"
_IEFormElementSetValue ($o_login, $username)


Выдает
Код:
--> IE.au3 V2.4-0 Warning from function _IEFormElementGetObjByName, $_IEStatus_NoMatch
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType


Помогите :(
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: [Сеть, интернет] Вопрос по input

Yura-H2O [?]
Помогите
sad.gif
а на предупреждение отреагировать?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Сеть, интернет] Вопрос по input

OffTopic:
Пффф, я бы давно за такое отреагировал как минимум предупреждением за игнорирование :scratch:
 
Автор
Y

Yura-H2O

Новичок
Сообщения
35
Репутация
0
Отреагировал

И уже разобрался, что на сайте https://passport.i.ua/ каждый раз генерируется новое значение name для input
По идеи тогда надо найти в коде нужный input name с помощью
Код:
#include <IE.au3>
#include <array.au3>
$Url = "https://passport.i.ua"
$oIE = _IECreate($Url)
$oHTML = _IEDocReadHTML($oIE)
$login_array = StringRegExp($oHTML, '<p id=".{7}_errCtrl', 3)
_ArrayDisplay($login_array)


Только вот ничего не выводит:(
 

madmasles

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

;без проверок на ошибки
$oIE = _IECreate('https://passport.i.ua/')
$oTD = _IEGetObjById($oIE, 'reg_email')
$oInputs = _IETagNameGetCollection($oTD, 'input')
For $oInput In $oInputs
	$sTmp = _IEPropertyGet($oInput, 'outerhtml')
	If Not StringInStr($sTmp, 'DISPLAY: none') Then
		ConsoleWrite($sTmp & @LF)
		_IEFormElementSetValue($oInput, '[email protected]')
		ExitLoop
	EndIf
Next
 
Автор
Y

Yura-H2O

Новичок
Сообщения
35
Репутация
0
не работает. на сайте ничего не заполняет.
в консоли выдает
Код:
<INPUT class=width_50 disabled name=f1368a6 maxLength=64>

а можно сделать по моему примеру, просто исправить StringRegExp???

и мне надо заполнить формы логин, мыло, пароль
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Yura-H2O [?]
не работает. на сайте ничего не заполняет.
Поменяйте
Код:
;...
If Not StringInStr($sTmp, 'DISPLAY: none') Then
;...на
If Not StringInStr($sTmp, 'disabled') Then
;...
Не надо менять.
 
Автор
Y

Yura-H2O

Новичок
Сообщения
35
Репутация
0
консоль выдает
Код:
<INPUT style="DISPLAY: none" name=email size=7>
на сайте ничего не вводится

может все-таки поможете мне с StringRegExpом?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Yura-H2O [?]
и мне надо заполнить формы логин, мыло, пароль
У меня нет поля для логина, а искать украинские прокси я не буду. Посмотрите, какие ID у тегов TD, в которых находятся нужные элементы INPUT, и ищите нужные в цикле, как у меня в коде ('DISPLAY: none').
 
Автор
Y

Yura-H2O

Новичок
Сообщения
35
Репутация
0
Додумался, что у Вас отображается совсем другая страница, для России. Поменял под свою - заработало!
А вот не понимаю, что значит это:
Код:
_IEPropertyGet($oInput, 'outerhtml')



Добавлено:
Сообщение автоматически объединено:

Код:
<tr>
	<td class="field_title">Придумайте пароль</td>
	<td>
		<p id="fa56879_errCtrl" style="display: none" class="error"><span></span></p><p id="fa56879_f8e8aac_errCtrl" style="display: none" class="error"><span></span></p>		<div class="necessary"><input type="password" name="fd1461b" class="width_50" onkeyup="doLoadUp2();" style="display:none" maxlength="32" /><input type="password" name="f7ff930" class="width_50" onkeyup="doLoadUp2();" style="display:none" maxlength="32" /><input type="password" name="fa56879" class="width_50" onkeyup="doLoadUp2();" style="display:none" maxlength="32" />		<span id="passwordStatus" style="display: none"></span>
		</div>
		<p class="field_description" rowspan="2">минимальная длина: 6 символов ("a&ndash;z", "A&ndash;Z", "0&ndash;9")</p>
		<label id="reg_genpass" style="display: none;"><input type="checkbox" name="pass_gen" value="1" onclick="chType(3);" id="label_pass_gen" /> придумайте мне пароль и отправьте его на e-mail</label>
	</td>
</tr>

<tr id="reg_pconf">
	<td class="field_title">Подтвердите пароль</td>
	<td>
		<p id="f8e8aac_errCtrl" style="display: none" class="error"><span></span></p>		<div class="necessary"><input type="password" name="f103ff8" class="width_50" onkeyup="doLoadUp2();" style="display:none" maxlength="32" /><input type="password" name="f8e8aac" class="width_50" onkeyup="doLoadUp2();" style="display:none" maxlength="32" /><input type="password" name="f00bcba" class="width_50" onkeyup="doLoadUp2();" style="display:none" maxlength="32" /><span class="link" onclick="Autoload.call('I_Popup.showSimple', this, 'info_password', { className: 'popup popup_large' });">как выбирать пароль?</span>
<div id="info_password" style="display: none;">
	<h2>Как выбирать пароль?</h2>
	<p>Не делайте простых паролей. Мы со своей стороны ограничили возможность быстрого подбора паролей, но это не дает гарантии, что пароль типа 1111 нельзя будет подобрать. Поэтому, рекомендуем использовать более сложные для подбора пароли.</p>
	<p>Самый надежный пароль должен состоять из минимум шести-семи символов, с использованием букв, цифр и символов. Например, kjf4k5j-4jg. Конечно, такой пароль Вам будет сложно запомнить, поэтому можно использовать в качестве пароля одно или два русских слова, которые Вы точно не забудете, при этом сделать их набор не в русской раскладке, а в английской раскладке набирать слово нажимая на русские буквы.</p>
Например, берем слова "кошка мурка", набираем их латинскими буквами по русским клавишам, получаем "rjirf vehrf", вместо пробела вставляем какую-либо цифру, или символ минуса. Таким образом получится пароль "rjirf-vehrf", который будет фактически нереально подобрать, при этом Вы, имея сложный пароль, вряд ли его забудете.
</div>
	</td>
</tr>

Этим кодом можно заполнить форму "Подтвердить пароль", а как мне быть с первым полем ввода пароля если там нет ID у тегов Tr
Код:
$oTD2 = _IEGetObjById($oIE, 'reg_pconf')
$oInputs2 = _IETagNameGetCollection($oTD2, 'input')
For $oInput In $oInputs2
    $sTmp2 = _IEPropertyGet($oInput, 'outerhtml')
    If Not StringInStr($sTmp2, 'DISPLAY: none') Then
        ConsoleWrite($sTmp2 & @LF)
        _IEFormElementSetValue($oInput, $Rand_pass)
        ExitLoop
    EndIf
Next
 
Верх