Заполнение WEB форм программно

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Заполнение WEB форм программно

Сообщение lostos » 04.05.2008 (Вс) 15:25

Добрый день Уважаемые Форумчане!
как, как заполнить веб форму программно? на это тему есть множество дискуссий, но ничего конкретного... как же это сделать?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 04.05.2008 (Вс) 15:34

Поискать по форуму и включить голову.
I don't understand. Sorry.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.05.2008 (Вс) 15:39

на это тему есть множество дискуссий, но ничего конкретного...

Не надо врать!

Поиск по первой же пришедшей на ум фразе сразу же даёт полезный результат
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 04.05.2008 (Вс) 17:23

Вот спасибо, оказалось это легко сделать при помощи взаимодействия с IE, вот только один вопросик, Вот напрмер код:

Код: Выделить всё
Private Sub Command1_Click()
    Dim Ie As Object
    Set Ie = CreateObject("InternetExplorer.Application")
    Ie.Navigate "http:\\google.com.ru"
    Ie.MenuBar = 1
    Ie.ToolBar = 1
    Ie.StatusBar = 1
    Ie.AddressBar = 1
    Ie.Visible = 1
    Do While Ie.Busy
        DoEvents
    Loop
    Ie.Document.All("q").Value = "Odrick"
    Ie.Document.All("il").Click
    Ie.Document.All("btnG").Click
End Sub


q, il, btnG имена кнопок на веб странице, q - текстовое поле на web странице, в коде, значение этого текстового поля "Odrick" как вместо "Odrick" подставлять другие значения? например из Textbox'a ?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 04.05.2008 (Вс) 17:59

Ie.Document.All("q").Value = TextBox1.Text
I don't understand. Sorry.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 05.05.2008 (Пн) 14:38

Кликанье на кнопки, заполнение полей, это понятно. А как действовать сдесь: Вот страница на ней ссылка... как на ссылку кликнуть?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.05.2008 (Пн) 14:40

Читай документацию. Ссылка - это такой же объект как и все остальное. У него есть методы, которые позволяют делать разнообразные действия. Найдешь что тебе надо.
I don't understand. Sorry.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 05.05.2008 (Пн) 16:26

Спасибо, и ещё один момент, если там где авто заполняются поля стоит капча? (картинка)) как её вводить? я делаю например так:

Код: Выделить всё
Ie.Document.All("capcha").Value = Text1.Text


а саму картинку загружаю через webbrowser но ведь когда пойдёт загрузка страницы картинка изменится и бессмысленно загружать в WEBBROWSER... как выйти из этой ситуации?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.05.2008 (Пн) 16:52

Если ты загрузишь страницу в webbrpwser, то там будет и картинка с капчи и все такое. Отдельно ее грузить не нужно.
I don't understand. Sorry.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 05.05.2008 (Пн) 16:57

ну если я загружу страницу в webbrowser как я буду поля заполнять? поля же заполняются с помощью взаимодействия с IE

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 05.05.2008 (Пн) 20:38

lostos писал(а):ну если я загружу страницу в webbrowser как я буду поля заполнять? поля же заполняются с помощью взаимодействия с IE

Поля заполняются "с помощью взаимодействия" с DOM. Как? Ответ можно найти тут.
Salus populi suprema lex

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 06.05.2008 (Вт) 3:06

Да нет, вот например код:
Код: Выделить всё
Private Sub Command1_Click()
    Dim Ie As Object
    Set Ie = CreateObject("InternetExplorer.Application")
    Ie.Navigate "http:\\site.com"
    Ie.MenuBar = 1
    Ie.ToolBar = 1
    Ie.StatusBar = 1
    Ie.AddressBar = 1
    Ie.Visible = 1
    Do While Ie.Busy
        DoEvents
    Loop
    Ie.Document.All("login").Value = Text1.Text 'Поле логин
    Ie.Document.All("pass").Value = Text2.Text 'Поле пароль
    Ie.Document.All("confirmpass").Value = Text2.txet 'Подтверждение пароля
    Ie.documents.All("kapcha").Value = Text3.Text 'Поле куда вводятся циферки с капчи
End Sub

Вопрос, где мне взять циферки? куда они должны выводится?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 06.05.2008 (Вт) 11:05

Возьми слова Рэя, и замени в них слово "ссылка" на слово "картинка". Блин, хоть немного думать начинать надо?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 06.05.2008 (Вт) 11:48

Помоему мы друг друга не понимаем)) вы упорно не понимаете о чём я толкую... ну загрузится картинка, а при открытии IE она будет другая... какой смысл её вводить?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 06.05.2008 (Вт) 20:05

Фигово ты толкуешь, раз тебя уже три человека понять не могут.

Ну загрузилась она. Ну распознал ты её. Ну ввёл ты распознанный текст в нужной поле. Ну засабмитил ты форму.

В чём проблема-то?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 07.05.2008 (Ср) 3:20

ключевая фраза "ну загрузилась она" как её загрузить? и во что?

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 07.05.2008 (Ср) 9:47

Вообщем так, нужно сохранить картинку с IE с помощью выше упомянутого кода. Я хочу сделать так: сначало сохранить картинку а потом показать допустим с помощью PictureBox

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 07.05.2008 (Ср) 14:18

а где вообще можно почитать про это функцию, взаимодействия с IE ?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.05.2008 (Ср) 14:31

lostos
Есть кнопка Изображение для тех случаев, когда хочется внести что-то добавить, и при этом, это что-то совпадает по теме с предыдущим сообщением. Устное замечание.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 07.05.2008 (Ср) 16:10

:roll: Захотелось поучаствовать в дискуссии.

Для загрузки картинки можно вот так сделать. Либо вообще API-кой одной, но это кому как удобнее.

Код: Выделить всё

Private Sub Form_Activate()
    Dim URL
    URL = "http://www.yandex.ru"
    If LoadDocumentFromURL(URL, HTMLDocument) Then
        For Each IMG In HTMLDocument.All.tags("IMG")
            If LoadPictureFromURL(IMG.src, ipic) Then
                Me.Picture = ipic
                MsgBox "Загружена картинка: """ & IMG.src & """.", vbInformation, "LoadPictureFromURL"
            Else
                MsgBox "Ошибка при загрузке картинки. """ & IMG.src & """. " & Err.Description, vbCritical, "LoadPictureFromURL"
            End If
        Next
   
    Else
        MsgBox Err.Description, "Ошибка при загрузке документа", vbCritical
    End If
End Sub

Function LoadDocumentFromURL(URL, HTMLDocument)
    On Error Resume Next
    Dim XMLHTTP
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    XMLHTTP.Open "GET", URL, False
    XMLHTTP.Send
   
    If XMLHTTP.Status <> 200 Then
        Err.Raise vbObjectError + XMLHTTP.Status, "LoadDocumentFromURL", XMLHTTP.Status & " " & XMLHTTP.statustext
        Exit Function
    End If
   
    Dim Stream
    Set Stream = CreateObject("ADODB.Stream")
    If Err.Number <> 0 Then Exit Function
    Stream.Charset = "Windows-1251"
    Stream.Type = 1
    Stream.Open
    Stream.Write XMLHTTP.ResponseBody
    Stream.Position = 0
    Stream.Type = 2
   
    If Err.Number <> 0 Then Exit Function
   
    Set HTMLDocument = CreateObject("HTMLFile")
    HTMLDocument.Open
    HTMLDocument.Write "<BASE href=""" & URL & """>"
    HTMLDocument.Close
    HTMLDocument.body.innerhtml = Stream.ReadText
    If Err.Number <> 0 Then Exit Function
   
    If Err.Number = 0 Then LoadDocumentFromURL = True
End Function


Function LoadPictureFromURL(URL, IpictureDisp)
    On Error Resume Next
    LoadPictureFromURL = False
    Dim XMLHTTP
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    XMLHTTP.Open "GET", URL, False
    XMLHTTP.Send
   
    If XMLHTTP.Status <> 200 Then
        Err.Raise vbObjectError + XMLHTTP.Status, "LoadPictureFromURL", XMLHTTP.Status & " " & XMLHTTP.statustext
        Exit Function
    End If
   
    Set Stream = CreateObject("ADODB.Stream")
    Stream.Type = 1
    Stream.Open
    Stream.Write XMLHTTP.ResponseBody
   
    If Err.Number <> 0 Then Exit Function
   
   
    Dim FileSystemObject
    Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
   
    Dim TempFileName
    TempFileName = FileSystemObject.GetSpecialFolder(2) & FileSystemObject.GetBaseName(FileSystemObject.GetTempName)
   
    Stream.SaveToFile TempFileName, 2
   
    Set IpictureDisp = LoadPicture(TempFileName)
    FileSystemObject.DeleteFile TempFileName
   
    If Err.Number = 0 Then LoadPictureFromURL = True
End Function


Вот пример наваял. По очереди грузит картинки с Яндекса. Правда PNG читать не хочет. Ну это уже следующий этап. :roll:
Последний раз редактировалось ALX_2002 07.05.2008 (Ср) 16:50, всего редактировалось 1 раз.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 07.05.2008 (Ср) 16:27

ну, о чём я и говорю, загрузить её так не проблема, но при открытии окна IE
Код: Выделить всё
Set Ie = CreateObject("InternetExplorer.Application")
    Ie.Navigate "http:\\site.com"

Серверу подастся новый запрос, сгенерируется новая картинка, в текстовое поле в веб форме нужно уже ввести другую, сгенерированую при открытии. Я хотел сделать так: Посредством этого кода сохранить картинку на жёский диск как бы автоматизироват действие "сохранить как" в IE вот что мне нужно... вот я и спрашиваю где почитать про возможности функции взаимодействия с IE в VB

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.05.2008 (Ср) 16:29

Чем больше я читаю этот пост, тем меньше понимаю, зачем его автор это все городит.
I don't understand. Sorry.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 07.05.2008 (Ср) 16:29

вот я и спрашиваю где почитать про возможности функции взаимодействия с IE в VB

Нигде. В VB нет каких-либо особых функций для взаимодействий с IE.
Есть общий набор интерфейсов для взаимодействия с IE из любых языков.

Справочник по DOM тебе в помощь.

Сначала ответь на вопрос: почему при загрузке страницы в WB у тебя не грузится картинка?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 07.05.2008 (Ср) 16:49

RayShade писал(а):Чем больше я читаю этот пост, тем меньше понимаю, зачем его автор это все городит.

затем, зачем мне загружать картинку эту? если при открытии страницы нужно будет другое число в поля вводить, потому что при окрытие другая генерируется каринка. Эту картинку нужно просто с уже открытой страницы сохранить, как в браузере сохранить как только программно

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.05.2008 (Ср) 16:59

При загрузке всей формы в webbrowser, у тебя там будет и картинка и все остальное. Если ты прямо после этлого через DOM модель заполнишь поля, то все будет окей. Зачем перегружать страницу еще раз? В чем проблема?
I don't understand. Sorry.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 07.05.2008 (Ср) 17:02

RayShade писал(а):При загрузке всей формы в webbrowser, у тебя там будет и картинка и все остальное. Если ты прямо после этлого через DOM модель заполнишь поля, то все будет окей. Зачем перегружать страницу еще раз? В чем проблема?

Хорошо, как тогда этот код переделать под компонент Webbrowser?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.05.2008 (Ср) 17:08

Неважно, что у тебя будет - webbrowser, IE activex - то что я сказал справедливо для всех случаев.
I don't understand. Sorry.

lostos
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 04.05.2008 (Вс) 15:22

Сообщение lostos » 07.05.2008 (Ср) 17:21

Если я правильно понимаю в компонент webbrowser должна загрузится страница и уже в webbrowser вместо IE заполнять поля, но не нужно что бы выводилась страница, мне нужно что бы только картинка показывалась

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 07.05.2008 (Ср) 17:31

Господа, прошу прощения за OFFTOP. Не в моих правилах осуждать участников форума, просящих о помощи, т.к сам был и до сих пор бываю в такой же ситуации, и возможно я не прав в своём предположении, но помоему автор не понимает и не хочет понимать, что ему говорят. :?
1) До сих пор нет ни единой даже кратенькой "портянки" кода, которую автор выложил и написал бы, что вызывает трудности.
2) По ходу автор ждёт готового решения и попусту забивает бесполезными вопросами пост.

К вышесказанному хочется добавить: Уважаемый lostos, может всё таки прислушаетесь и приглядитесь к тому что вам говорят, желающие помочь, люди. Ваша задача не является из ряда вон выходящей и уже много раз рассматривалась с разных сторон в этом и многих других форумах. И всегда упиралась в сложность обхода "теста Тьюринга", а именно - распознавание символьной последовательности на изображении. Задумайтесь - Она (защита) сделана не зря и желающих её обойти очень много. Программных средств для распознавания изображений на софт рынке сейчас предостаточно, но распознавание кода на картинке с мусором до сих пор сложная задача и для того чтобы её решить нужен довольно богатый багаж знаний. Прошу прощения, но судя по вопросам, которые вы задаёте, Вам ещё долго придётся продвигаться в направлении изучения этого вопроса.

Итого: Может забить на это дело к едрени фени и не тратить место в базе форума на бесполезные, по моему мнению посты ? :)

P.S Если я не правильно понял задачу, прошу извинить и растолковать более подробно - ЧТО НУЖНО СДЕЛАТЬ ? :) По шагам. От начала и до конца.
Последний раз редактировалось ALX_2002 07.05.2008 (Ср) 17:32, всего редактировалось 1 раз.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.05.2008 (Ср) 17:32

Ну сделай webbrowser невидимым, когда он загрузится, вытащи из него картинку и покажи ее.
I don't understand. Sorry.

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 44

    TopList