Форум программистов, компьютерный форум CyberForum.ru

Visual Basic

Войти
Регистрация
Восстановить пароль
 
Евгений_П
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 11
#1

Заполнение полей в браузере - Visual Basic

27.12.2016, 00:50. Просмотров 295. Ответов 7
Метки нет (Все метки)

Как программно заполнить поля на странице регистрации допустим на почте рамблера https://id.rambler.ru/account/registration поля где известен ID там все понятно, но там есть динамическое поле заполнение даты. Подскажите как с помощью VB6 заполнить дату рождения, если сама дата в переменной ну хотя бы DataRog=01.02.1990. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений_П
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 11
05.01.2017, 11:44  [ТС]     Заполнение полей в браузере #2
Да, я начинающий программист, многое не знаю, поэтому и ищу помощи. Неужели форум не работает? Или никто не знает?
Что мог понять, так то что там используется aria. А id там не определен. Как заполнить такое поле не понятно. На другом сайте id указано так : <div id="calc-tiny-osago-owner-settlement-tooltip-content" style="display: none">
Как мне программно обратиться к этому полю? Что бы потом из переменной заполнить название города, или что еще там требуют. Спасибо
Catstail
Модератор
22309 / 10714 / 1742
Регистрация: 12.02.2012
Сообщений: 17,787
05.01.2017, 21:57     Заполнение полей в браузере #3
Из твоих сообщений следует, что ты плохо представляешь задачу, за которую берешься... Чтобы сдвинуться, нужно ориентироваться в модели DOM (Document Obect Model). Замечу, что сайты регистрации предпринимают специальные меры, чтобы поля заполнялись не программно, а вручную. "Пробить" это, вероятно, можно... Выложи код, которым ты пользуешься.
Евгений_П
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 11
06.01.2017, 02:08  [ТС]     Заполнение полей в браузере #4
Вы абсолютно правы. Я радиоинженер. Программирую как хобби, ну или при необходимости. Вот попалась задача программно заполнить регистрацию на почте, причем не важно на какой. Вроде решил, т.е. нашел где нет динамических полей где есть id поля, тут все просто. Это на Яндексе:
Ie1.Navigate ("https://passport.yandex.ru/registration/mail")
Ie1.MenuBar = 1
Ie1.ToolBar = 1
Ie1.StatusBar = 1
Ie1.AddressBar = 1
Ie1.Visible = 1
'------------------
'Ожидание загрузки страницы
Do Until Ie1.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop

Ie1.Silent = True 'это разрешает диалоговое общение IE с пользователем
' без этого давала ошибку
Ie1.Visible = True 'окно становится видимым

Ie1.Document.All("firstname").Value = Форма1.Текст6.Text 'SobI '"Иван"
Ie1.Document.All("lastname").Value = Форма1.Текст5.Text

ну и так далее

Но проблема затянула меня, не люблю отступать. Хочется понять как быть с динамическими полями когда нет id или когда id записано в виде aria и т.д. Ну вот нашел последнее с чем пытался разобраться: http://www.rgs.ru/products/private_p...rief/index.wbp
первое же поле id нет
Но есть это:
<pre aria-hidden="true" style="position: absolute; visibility: hidden; white-space: pre; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; word-spacing: 0px; letter-spacing: 0px; text-indent: 0px; text-rendering: auto; text-transform: none;"></pre>

когда ввожу город получаю:

<pre aria-hidden="true" style="text-transform: none; text-indent: 0px; letter-spacing: 0px; font-family: Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; word-spacing: 0px; white-space: pre; visibility: hidden; position: absolute;">Москва</pre>

Если считать это место и внести нужное изменение название города, а потом записать обратно, может и получится но как сделать это? Пытался просто методом перебора по Tab или Click т.е. перейти к полю, далее из программы сделать Click Но я даже этого без ID сделать, не говоря что бы завести название города.

Вы предлагаете DOM но ведь там как мне кажется надо тоже точно определить название поля ввода. Хотя возможно я и не прав. Буду думать.
А зачем им запрещать ввод данных автоматом? Если у меня есть данные по водителю в текстовом файле, почему запрещать все это ввести автоматом от туда. Ведь комп и нужен, что бы облегчать труд людей. Где надо там ставят защиту - вносится данные с картинки или присылаются временные коды - это нормально, но заставлять человека вносить другие данные, это глупо, тем более если они уже есть. У нас так вначале заполняли одну и туже информацию (фамилия, имя , отчество и т.д) в 4 документах, сидело куча народу. Я сделал кнопку, первый кто внес все данные записывает их в текстовый файл, а остальные уже заполняют от туда автоматом. Раньше люди тарахтели клавой, а сейчас одна управляется (остальные ушли в декрет).
Спасибо за ответ. Надеюсь что вы мне поможете.
Catstail
Модератор
22309 / 10714 / 1742
Регистрация: 12.02.2012
Сообщений: 17,787
06.01.2017, 14:00     Заполнение полей в браузере #5
Затрудняют ввод данных обычно для того, чтобы автомат не подбирал пароли.

DOM хорош тем, что позволяет добраться до любого элемента документа. Ваша задача формулируется так: есть сайт, нужно программно заполнить форму на этом сайте и отправить на сервер. Так?

Добавлено через 2 минуты
О DOM. Там есть такие элементы innerHTML и outerHTML. Возможно, они помогут.
Евгений_П
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 11
07.01.2017, 01:44  [ТС]     Заполнение полей в браузере #6
Catstail, спасибо что не бросаете меня.
наверное вы правы, но ведь я только открываю новую почту, т.е. придумываю логин и пароль, а не вхожу в уже существующую. Что касается на других сайтах с aria там надо ввести город это вообще сбор информации обо мне и на безопасность не влияет. Ну это ладно. Вы абсолютно правы мне надо заполнить поля причем на сайте (http://www.rgs.ru/products/private_p...rief/index.wbp) есть список городов, мощности двигателей и т.д. т.е. пока выбрать из списка (мне показалось с этого варианта легче начинать чем свободный ввод). Пробовал так:

Set xmlParser = CreateObject("Msxml2.DOMDocument")
xmlParser.Load "http://www.rgs.ru/products/private_person/auto/osago/brief/index.wbp"
ttt = xmlParser.ReadyState - проверка получил ttt=4 т.е. (4) - документ разобран, с ошибками или без.

надо думать страница открылась, а дальше что ни делал везде пишет нет объекта

Set currNode = xmlParser.DocumentElement пишет currNode = (Nothing)
Set currNode1 = xmlParser.DocumentElement.Text переменная объекта или блока не установлена

и это понятно почему ведь currNode нет, т.е. элементов в документе нет.
А значит firstChild, lastChild nextSibling и т.д. т.е. навигацию использовать не могу коллекции нет.

Добавлено через 10 часов 27 минут
С помощью innerHTML внес изменение в body, а точнее в <pre </pre> искусственно записал туда город и записал body с изменениями обратно в интернет эксплорер. Таким образом в теле body название города уже есть, но в самом эксплорере в поле не высвечивается. Похоже просто механически вставить название не получится. Ведь там идет выбор из списка (причем где сам список городов я так и не нашел) и когда выбираешь город из списка появляются новые записи, теги. Правда возможно надо показать эксплореру что в body произошли изменения, но как я пока не пойму. Буду думать. А может IE не работает с innerHTML и надо перейти на что-то другое Google Chrome?
Pro_grammer
Модератор
5875 / 2035 / 387
Регистрация: 24.04.2011
Сообщений: 3,450
Записей в блоге: 9
07.01.2017, 09:58     Заполнение полей в браузере #7
Может проще воспользоваться готовыми продуктами? Например как то ставил себе iMacros. Это программа, которая ставится в виде плагина или как отдельное приложение и позволяет автоматизировать и имитировать действия пользователя в браузере. Можно её вызывать прямо из VBA
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2017, 12:10     Заполнение полей в браузере
Еще ссылки по теме:

Имитация нажатия мыши в браузере на VB Visual Basic
Visual Basic Считать текст с текстового поля в браузере
Индекс текстовых полей Visual Basic
Проверка на заполненность текстовых полей Visual Basic
Visual Basic Заполнение полей сторонней программы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Евгений_П
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 11
07.01.2017, 12:10  [ТС]     Заполнение полей в браузере #8
Pro_grammer, спасибо за то что откликнулись. Я слышал о таких программах, их много, кстати практически все они платные, но не в этом дело. Главное, что это сделал дядя, а не я. Я же хочу сам понять как заполнять. Ведь если сделали такую программу, которая заполняет все поля, а они все разные, ведь некоторые даже с Tab не работают, значит есть такая принципиальная возможность, вот я и хочу научиться, понять принцип. Я думаю, можно считать координаты каждого поля, затем программно эмитировать нажатие мышкой, дальше должна уже заработать программа сайта, например высветить перечень, скажем городов, но проблема в том, что перечень выходит только после ввода нескольких букв города, а вот как ввести их, (а уж если часть слова ввел, то почему нельзя все слово ввести), т.е. получаем то от чего шли. Скорее всего надо разбираться со скриптом сайта (где-то же список есть). Но это со списком, а он есть не всегда. Возможно ID поля есть и сам сайт его использует, но не высвечивается.
Yandex
Объявления
07.01.2017, 12:10     Заполнение полей в браузере
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru