Урок 36 - Взаимодействие с веб страницей
В этом уроке мы попробуем авторизоваться на сайте yandex.ru.
Мы программно отыщем поля для ввода логина и пароля и нажмем на кнопку входа. Нам понадобится компонент WedBrouser1 и 2 кнопки, кидаем все это на форму.
На первой кнопке сделаем загрузку сайта:
procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('www.yandex.ru'); //Открываем яндекс end;Наша программа будет сканировать страницу на наличие полей и когда имя поля совпадет с искомым она подставит в него текст. Откроем исходный код страницы, и что мы видим, кашу, из всей этой каши нас интересует всего 3 строчки:
Поле для логина:
Теперь мы знаем имена полей и кнопки, а значит сможем их найти, создаем обработчик события OnClikc Button2 и заполним его вот таким кодом:
procedure TForm1.Button2Click(Sender: TObject); var i:integer; s: String; html_tag: Variant; begin html_tag:= WebBrowser1.OleObject.Document.forms.item(0).elements; for i:=0 to (html_tag.Length-1) do begin if html_tag.item(i).name = 'login' then //ищем элемент с именем "login" html_tag.item(i).value:= 'thedelphi'; //и присваиваем ему значение if html_tag.item(i).name = 'passwd' then //ищем элемент с именем "passwd" html_tag.item(i).value:= 'delphi'; //и присваиваем ему значение if html_tag.item(i).value = 'Войти' then //ищем элемент со значением "Войти" html_tag.item(i).click; // и нажимаем на него end; end;Можно проверить, сначала загрузим страницу, нажав на первую кнопку, а потом на вторую, тем самым поля должны заполнится.
Но как видно ничего не произошло, такое случилось из-за той кучи кода, страничка оказалась слишком сложной, но слава богу есть альтернатива по проще: https://mail.yandex.ru/, имена элементов совпадают, так что менять ничего не нужно, кроме самого адреса. Пробуем снова:
И вуаля, все получилось!!!
Таким способом можно например проверять новости еще что-нибудь. Удачи!
Встретимся в следующем уроке!
Добавил(а): shukrona.normatova | Дата: 2016-08-06 | |
Не получается . Вторая кнопка Вообще не работает
|
No results found.