Урок 36 - Взаимодействие с веб страницей

   В этом уроке мы попробуем авторизоваться на сайте yandex.ru.

   Мы программно отыщем поля для ввода логина и пароля и нажмем на кнопку входа. Нам понадобится компонент WedBrouser1 и 2 кнопки, кидаем все это на форму.

   На первой кнопке сделаем загрузку сайта:

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate('www.yandex.ru'); //Открываем яндекс
end;
   Наша программа будет сканировать страницу на наличие полей и когда имя поля совпадет с искомым она подставит в него текст. Откроем исходный код страницы, и что мы видим, кашу, из всей этой каши нас интересует всего 3 строчки:

Поле для логина:
<input class="b-form-input__input" name="login" id="id001" value="" tabindex="3" /> Поле для пароля:
<input class="b-form-input__input" name="passwd" value="" id="id002" tabindex="4" type="password"/> Кнопка "Войти":
<input type="submit" hidefocus="true" tabindex="6" class="b-form-button__input" value="Войти">
   Теперь мы знаем имена полей и кнопки, а значит сможем их найти, создаем обработчик события 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.
Отменить.