Авторизоваться в twebbrowser и выбрать пункт меню

Shouldercannon

Well-known member
25.05.2010
128
0
#1
Доброго времени суток!
Есть задача:
1. Загрузить ссылку в TWebBrowser и в нём же произвести авторизацию
2. Войти в нужный пункт меню и нажать кнопку
Помогите, пожалуйста, реализовать?
 

sinkopa

Well-known member
17.06.2009
344
4
#2
Доброго времени суток!
Есть задача:
1. Загрузить ссылку в TWebBrowser и в нём же произвести авторизацию
1. Загрузить страницу
Код:
Webbrowser1.Navigate('http://www.blabla.bla');
while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
2. Получить интерфейсы IHTMLDocument2 и IHTMLWindow2
Код:
uses MSHTML;
// . . .
var
Doc: IHTMLDocument2;
HTMLWindow : IHTMLWindow2;
// . . .
Webbrowser1.Document.QueryInterface(IHTMLDocument2, Doc);
HTMLWindow := Doc.parentWindow;
3. Отыскать форму с авторизацией и заполнить контролы логина и заполнить значения
Код:
var
ovElements: OleVariant;
// . . .
 
for i := 0 to Doc.Forms.Length - 1 do begin
  ovElements := Doc.Forms.Item(i).elements;
 
  for j := ovElements.Length - 1 downto 0 do begin
	 if (ovElements.Item(j).tagName = 'INPUT') and (ovElements.Item(j).type = 'text') then
	   ovElements.item(j).Value := 'блалогин';
  // . . .
  end;
// . . .
end;
4. Отправтить форму (залогиниться)
можно напрямую
Код:
Doc.Forms.Item(i).submit();
или через метод execScript окна (если известен ID имя формы)
Код:
HTMLWindow.execScript('document.<loginFom>.submit()', 'JavaScript'); // <loginForm> - ID имя формы
2. Войти в нужный пункт меню и нажать кнопку
Помогите, пожалуйста, реализовать?
А вот это уже к экстрасенсам...
Меню на HTML-странице можно реализовать 128-ю с половиной способами... :)
 

Shouldercannon

Well-known member
25.05.2010
128
0
#3
Вот так получилось.
Код:
procedure TForm6.Button1Click(Sender: TObject);
var
  Form: OleVariant;
  I, I2: Integer;
begin
  for I := 0 to WebBrowser1.OleObject.Document.Forms.Length - 1 do
  begin
	Form := WebBrowser1.OleObject.Document.Forms.Item(I).elements;
 
 
 
 
	for I2 := 0 to Form.Length - 1 do
	begin
	  if Form.Item(I2).name = 'log_email' then Form.Item(I2).value := ELogin.Text
	  else if Form.Item(I2).name = 'pass' then Form.Item(I2).value := EPassword.Text;
 
 
 
 
	  Button2.Click;
	end;
  end;
end;
 
 
 
 
procedure TForm6.Button2Click(Sender: TObject);
var
  Form: OleVariant;
  I, I2: Integer;
begin
  for I := 0 to WebBrowser1.OleObject.Document.Forms.Length - 1 do
  begin
	Form := WebBrowser1.OleObject.Document.Forms.Item(I).elements;
 
 
 
 
	for I2 := 0 to Form.Length - 1 do
	begin
	  if ((Form.Item(I2).type = 'submit') and (Form.Item(I2).value = 'Войти')) then
	  begin
		Form.Item(I2).Click;
	  end;
	end;
  end;
end;
 
Последнее редактирование модератором: