Что нового

Автозаполнение веб-форм с вводом значения из файла

galex

Новичок
Сообщения
12
Репутация
0
Привет всем! Прошу помочь с написанием скрипта для автозаполнения формы на сайте (регистрация компаний в каталоге). Сам написать не могу, поиск тоже не помог...

Во первых вопрос, так как узнал о программе недавно, возможно ли заполнение форм (я себе представляю заполнение форм такими программами как Робоформ, ФормФиллер. Просто в этих программах нет нужных мне функций)?

Собственно по теме, есть поля:
Блок 1 (информация о фирме)
1.
Код:
<input class="in1" name="company_name" id="company_name" type="text" value="">
2.
Код:
<select class="slt_2" name="company_age" id="company_age" onchange="copyto1(this.id,'company_age_text')">
гдк предлагается список (от 1 до 10)

Блок 2 (информация о владельце)
1.
Код:
<input class="in" id="Famr" name="famr" type="text" value="">
2.
Код:
<input class="in" id="Namer" name="namr" type="text" value="">
3.
Код:
<input class="in" id="Otchr" name="otchr" type="text" value="">
4.
Код:
<input class="in1" name="dd" id="dd" type="text" value="">
- день рожд.
5.
Код:
<select class="slt_1" name="mm" id="mm">
-месяц рожд. (список от 1 до 12)
6.
Код:
<input maxlength="4" class="in2" name="yy" id="yy" type="text" value="">
- год рожд.

Блок 3 (контакты)
1.
Код:
<input id="Index" name="index" maxlength="6" class="in3" type="text" value="">
2.
Код:
<select class="slt_2" id="Region" name="region" onchange="reset1(event);copyto1(this.id,'region_text')"></select>
- регион (список, от 0 до 99)
3.
Код:
<input id="City" name="city" type="text" value="" class="in4" onkeyup="sendPattern(1,event);reset2(event);">
- город
4.
Код:
<input class="in4" id="Street" name="street" type="text" onkeyup="sendPattern(2,event);" value="">
- улица

Блок 4 (мейл-пароль)
1.
Код:
<input name="email" id="Email" type="text" value="">
2.
Код:
<input name="pwd" id="pwd" type="password">

Блок 5 (откуда узнал об их сервисе)
1.
Код:
<input name="media" type="checkbox" value="1">
- газеты, тв и тд (от 1 до 10)

Все бы ничего, да надо заполнять некоторые поля, при возможности рандомно, из файла (.тхт). К таковым относятся пункты 1.1, блок 2 полностью (каждое поле независимо от друг друга), блок 3 полностью (так, как нужно указывать действительные адреса, но можно поиграться со значением № домов, и офисов, думаю, с этим сам смогу разобраться, если кто-нибудь возьмется помочь с основными полями), блок 4 полностью (пароль можно не менять).
Там где представлены списки нужен рандомный выбор, приведите пожалуйста хотя бы 1 пример реализации.

P.S.: Извините за пестроту, просто хотел выделить коды полей
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Asshaker
не разрывай шаблон не перекошивай страницу, пользуйся тэгами
 
Автор
G

galex

Новичок
Сообщения
12
Репутация
0
Asshaker
Я уже упомянул, что поиском пользовался, нужного решения не нашел. А скрипты сам писать не умею. Поэтому и прошу помочь
 
Автор
G

galex

Новичок
Сообщения
12
Репутация
0
Garrett, мне бы только пример (хотябы 1 блок), с остальным я сам как-нибудь разберусь
 
Автор
G

galex

Новичок
Сообщения
12
Репутация
0
Garrett,
Блок 1 (информация о фирме)
1.Код:
<input class="in1" name="company_name" id="company_name" type="text" value="">
2.Код:
<select class="slt_2" name="company_age" id="company_age" onchange="copyto1(this.id,'company_age_text')">
гдe предлагается список (от 1 до 10)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
galex
Примеры по работе с элементами DOM смотрите в справке UDFs3.chm в разделе "IE Management"
На форуме так же полно таких примеров.
Вы поймите, что поставленная вами задача абстрактна и на данный момент только вам известна.
Начните писать код, а если возникнут трудности, пишите и указываёте где вы "споткнулись" и вот тогда вам обязательно помогут.
 
Автор
G

galex

Новичок
Сообщения
12
Репутация
0
Garrett, Спасибо за подсказку :scratch:

У меня возник вопрос, как можно сделать, чтобы фамилии брались из списка (фамилии.тхт)?
Код:
$oFamiliya = _IEFormElementGetObjByName($oForm, "famr")
_IEFormElementSetValue($oFamiliya, "Иванов")

^Вот так он работает

+ еще

Можно ли как-нибудь сделать, чтобы месяцы брались рандомно? Вот сам код -
Код:
$oMecRojdeniya = _IEFormElementGetObjByName($oForm, 'mm')
_IEFormElementOptionSelect($oMecRojdeniya, '' & Random(01, 12, 1))

Сам не справился с этим потому, что Value идет не с "1", а с "01". Код работает, только когда выпадают значения от 10 до 12

madmasles, извините, исправил
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
galex,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Модератор.
 
Автор
G

galex

Новичок
Сообщения
12
Репутация
0
Код:
_IEFormElementCheckboxSelect ($oForm, 0,"media[]", 648, "byValue")


Подскажите пожалуйста, что у меня не правильно? Есть несколько квадратиков (флаги = с Value = 648, 649 и 660), нужно поставить одну рандомно или из списка (Value = 662, 663 и 664) -

Код:
$oMedia = _IEFormElementGetObjByName($oForm, 'media[]')
_IEFormElementOptionSelect($oMedia, '662')


т.е. нужно поставить или галочку или выбрать один пункт из списка

Ни одно из этого не работает...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Если нет атрибута value обратитесь к checkbox`м по индексу
Код:
_IEFormElementCheckboxSelect ($oForm, 1, "", 1, "byIndex")

Второй параметр это индекс
 
Автор
G

galex

Новичок
Сообщения
12
Репутация
0
Garrett,
спасибо большое! Хотя там и был Value, подошел ваш код)

У меня все же остается нерешенной главная задача. Я нигде не могу найти способ вытаскивания текста из документа и вставки в поле формы... Помогите пожалуйста, а то код я уже весь написал и процесс стоит только на этом..
 
Автор
G

galex

Новичок
Сообщения
12
Репутация
0
Garrett,
Какого текста, и из какого документа?

У меня есть рабочий код -
Код:
$oFamiliya = _IEFormElementGetObjByName($oForm, "famr")
_IEFormElementSetValue($oFamiliya, "Иванов")

Только мне нужно чтобы фамилии (в коде - "Иванов") брались из текстового документа, например, "C:\familii.txt" (не знаю, возможен ли рандомный выбор или по порядку, но если есть возможность для реализации, было бы очень хорошо)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
INI:
[surnames]
Иванов=Иван
Петров=Роман
Васичкин=Олег
Сидоров=Николай
Быков=Алексей

Код:
$oFamiliya = _IEFormElementGetObjByName($oForm, "famr")
$aArray = IniReadSection("test.ini", "surnames")
If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.")
Else
	$iRand = Random(1,$aArray[0][0],1)
	_IEFormElementSetValue($oFamiliya, $aArray[$iRand][0])
EndIf
 
Автор
G

galex

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

Не можете подсказать как найти элемент "Name=" ? Просто он задается в начале кода, а после идут три select'а.
Код:
<input type="hidden" value="" name="extendedField_1591" id="extendedField_1591">
     <td>
         <div class="input">
             <div class="input">
                 <select onchange="setChangeDate(document.getElementById('extendedField_1591'),this.value,null,null)"
                     style="width: 65px;">
                     <option value="">-- день --</option>
                     <option value="01">1</option>
                     <option value="02">2</option>

                </select></div>
         </div>
     </td>
     <td>
         <div class="input">
             <div class="input">
                 <select onchange="setChangeDate(document.getElementById('extendedField_1591'),null,this.value,null);CheckDate();"
                     id="DateMonth" style="width: 100px;">
                     <option value="">-- месяц --</option>
                     <option value="01">января</option>
                     <option value="02">февраля</option>

                </select></div>
         </div>
     </td>
     <td>
         <div class="input">
             <div class="input">
                 <select onchange="setChangeDate(document.getElementById('extendedField_1591'),null,null,this.value)"
                     style="width: 70px;">
                     <option value="">-- год --</option>
                     <option value="2012">2012</option>
                     <option value="2011">2011</option>
                </select></div>
         </div>
     </td>

Пробовал через это, не получается
Код:
$oDate = _IEFormElementGetObjByName($oForm, 'extendedField_1591')
_IEFormElementOptionSelect($oDate, "01")


Кстати в Хроме при заполнении этих полей меняется первое поле кода -
Код:
<input type="hidden" value="12/06/2011" name="extendedField_1591" id="extendedField_1591">
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
galex [?]
У вас синтаксическая ошибка в коде смотрите внимательнее!!!
Код:
$oDate = _IEFormElementGetObjByName($oForm, 'extendedField_1591)
 
Автор
G

galex

Новичок
Сообщения
12
Репутация
0
Garrett, да, заметил когда уже отправил сообщение, исправил, но все равно не работает
 
Верх