Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.02.2009, 16:31   #1
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
Печаль Как нажать на кнопку в TWebBrowser да и вообще хоть на что-то..

Помогите нажать на кнопку в webBrowser`e. Перерыл почти весь интернет, нашёл немного, но в любом случае не получается, надежда только на ваш форум. Расскажите как нажать на кнопку, кнопку-картинку, ссылку (это вроде получается, но с багами), как написать что-нибудь в строке в веббраузере. Если совсем просто - как введя в пару Edit`ов логин и пароль авторизироваться на конкретном сайте.
Если кто знает, расскажите как пользоваться методами Get и Post (или хоть ссыль кинте) в idhttp.
Пробовал следующие методы, не работают:

Код:
// If there is only one button, you can do something like:

WebBrowser1.OleObject.Document.forms.item(0).elements.item(0).click;

// This will do a click on the first element of the first <FORM>, where an
// element is either <INPUT>, <SELECT> or <TEXTAREA>.

// If there is more than one button, you can do something like:

procedure TForm1.Button1Click(Sender: TObject);
var
  ovElements: OleVariant;
  i: Integer;
begin
  ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
  for i := 0 to (ovElements.Length - 1) do
    if (ovElements.item(i).tagName = 'INPUT') and
      (ovElements.item(i).type = 'SUBMIT') and
      (ovElements.item(i).Value = 'Recent Charges') then
      ovElements.item(i).Click;
end;

http://www.delphisources.ru/pages/fa...mg_submit.html


я уже просто отчаялся.. Помогите плиз. Заранее спасибо
[Ferox]

Последний раз редактировалось Stilet; 05.02.2010 в 17:12.
postal2 вне форума
Старый 08.02.2009, 16:52   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Не стоит отчаиваться. И про "перерыл" верится с трудом...
Ведь достаточно прокрутить эту страничку вниз и в "Похожих темах" прочитать ответ...
mihali4 вне форума
Старый 08.02.2009, 17:11   #3
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Это подойдет?

Код:
procedure TForm1.Button2Click(Sender: TObject);
var form:olevariant;
f,i:Integer;
begin

for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
form:=WebBrowser1.OleObject.Document.forms.Item(f).elements;
for i:=0 to form.Length-1 do

if (form.item(i).type='submit')  then begin
form.item(i).click; // submit это кнопка 'Войти' это название кнопки
end;

end;
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума
Старый 08.02.2009, 17:50   #4
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

думаю, что подойдёт, но всёравно не фурычит.

Вот код со страницы

<td width="53"><input type="image" src="http://images.ganjawars.ru/img/index/login_button.gif" title="Вход в игру"></td>



Код:
procedure TForm1.Button1Click(Sender: TObject);
var
html_tag:oleVariant;
i:integer;
s:string;
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
html_tag.item(i).value:='login';

if (html_tag.item(i).name = 'pass') then
html_tag.item(i).value:='pass';

end;
end;
за вот это форуму реальное спасибо, логин и пароль теперь вводит))))

но по тому же принципу

if (html_tag.item(i).src='http://images.ganjawars.ru/img/index/login_button.gif') then
html_tag.item(i).click;

уже не работает.. А может и нажимает не то, что надо....
[Ferox]
postal2 вне форума
Старый 08.02.2009, 18:33   #5
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Вот форма:

Код:
<form name="form" method="post" action="2.php">
<input type="text" name="username" >
<input type="text" name="password" >

<input type="submit" name="Войти" value="submit">
</form>

Дельфи:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
form:olevariant;
f,i:Integer;
s:string;
begin
s:=edit1.Text;


for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
form:=WebBrowser1.OleObject.Document.forms.Item(f) .elements;
for i:=0 to form.Length-1 do
if form.item(i).name='username' then // посматри в исходнике страницы может не username а просто name или login
form.item(i).value:=s
else
if form.item(i).name='password' then // password обычно так пишится бывает pass
form.item(i).value:=s;
Button2.Click;
end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Webbrowser1.Navigate('http://localhost/project/mesag/1.htm');

// Эта форма передаст значения в php скрипт, а значения возьмет с edit

end;

procedure TForm1.Button2Click(Sender: TObject);
var form:olevariant;
f,i:Integer;
begin

for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
form:=WebBrowser1.OleObject.Document.forms.Item(f).elements;
for i:=0 to form.Length-1 do

if (form.item(i).type='submit')  then begin
form.item(i).click; // submit это кнопка 'Войти' это название кнопки
end;

end;
end;


end.

Если желеате заполнять больше значений измените вот это:


Код:
for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
form:=WebBrowser1.OleObject.Document.forms.Item(f) .elements;
for i:=0 to form.Length-1 do
if form.item(i).name='username' then // посматри в исходнике страницы может не username а просто name или login
form.item(i).value:=s
else
if form.item(i).name='password' then // password обычно так пишится бывает pass
form.item(i).value:=s;
Button2.Click;
end;
end;
на вот это :


Код:
for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
form:=WebBrowser1.OleObject.Document.forms.Item(f) .elements;
for i:=0 to form.Length-1 do
if form.item(i).name='username' then  begin // посматри в исходнике страницы может не username а просто name или login
form.item(i).value:=s; 
end;
if form.item(i).name='password' then begin // password обычно так пишится бывает pass
form.item(i).value:=s; 
end; 

if form.item(i).name='name' then begin // где name ваше name чекбокса, и т.д 
form.item(i).value:=s; // в эту переменную (типа string) заносите что угодно  
end;

...... n

Button2.Click;
end;
end;


и еще я думаю раз код такой:

Код:
<input type="image" src="http://images.ganjawars.ru/img/index/login_button.gif" title="Вход в игру">
то вам нужно изменить это:


Код:
if (form.item(i).type='image')  then begin
form.item(i).click; // submit это кнопка 'Войти' это название кнопки
end;
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 08.02.2009 в 18:45.
Stanislav вне форума
Старый 08.02.2009, 19:30   #6
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

.....
Код:
if (form.item(i).type='submit')  then begin
form.item(i).click; 
end;
......
Вот тут всё РАБОТАЕТ!!!! Спасибо огромное!!! На кнопку жмёт отлично!!!
код:

Код HTML:
<tr bgcolor=#d0eed0><td colspan=2 align=center class=wb><input type=submit value='Войти'></td></tr>
(это на другой страничке, где нажимает - код кнопки)

НО...
Как же всё-таки нажать на картинку? это уже конечно для меня менее важно но всё же... На будущее, так скажем, да и для других урок.

См. первый код или здесь:

Код HTML:
<td width="53"><input type="image" src="http://images.ganjawars.ru/img/index/login_button.gif" title="Вход в игру"></td>
Цитата:

if (form.item(i).type='image') then begin
form.item(i).click; // submit это кнопка 'Войти' это название кнопки
end;
не работает, думаю, что картинок там много. А нельзя проверять у каждой картинки title или путь? У меня не получается
[Ferox]

Последний раз редактировалось Stilet; 05.02.2010 в 17:13.
postal2 вне форума
Старый 08.02.2009, 19:37   #7
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

можно попробывать изменить submit на image:

Код:
if (form.item(i).type='submit') then begin
form.item(i).click; 
end;
вот:

Код:
if (form.item(i).type='image') then begin
form.item(i).click; 
end;
сомневаюсь что поможет.... скорее всего работать не будет.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 08.02.2009 в 19:51.
Stanislav вне форума
Старый 08.02.2009, 19:55   #8
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

страница www.ganjawars.ru/index.php
на ней есть КАРТИНКА 'войти'. Вот на эту картинку надо кликнуть, дабы попасть в эту самую игру!
Вложения
Тип файла: txt index[1].txt (19.1 Кб, 31 просмотров)
[Ferox]
postal2 вне форума
Старый 08.02.2009, 19:57   #9
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от postal2 Посмотреть сообщение
не работает, думаю, что картинок там много. А нельзя проверять у каждой картинки title или путь? У меня не получается
дело даже помойму не во множестве картинок, я проверял на работе одной, но если хотите можно проверить так:

Код:
if (form.item(i).type='image') or (form.item(i).title='image')   then begin
form.item(i).click; // submit это кнопка 'Войти' это название кнопки
end;
Почему не нажимет на картинки честно не знаю
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума
Старый 08.02.2009, 22:45   #10
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
Хорошо

Код:
 uses
   MSHTML;

 var
   iDoc: IHtmlDocument2;
   i: integer;
   ov: OleVariant;
   iDisp: IDispatch;
   iColl: IHTMLElementCollection;
   InputImage: HTMLInputImage;
 begin
   WebBrowser1.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
   if not Assigned(iDoc) then
   begin
     Exit;
   end;
   ov := 'INPUT';
   iDisp := iDoc.all.tags(ov);
   if Assigned(IDisp) then
   begin
     IDisp.QueryInterface(IHTMLElementCollection, iColl);
     if Assigned(iColl) then
     begin
       for i := 1 to iColl.Get_length do
       begin
         iDisp := iColl.item(pred(i), 0);
         iDisp.QueryInterface(HTMLInputImage, InputImage);
         if Assigned(InputImage) then
         begin
           if InputImage.Name = 'submit' then //у меня получилось через InputImage.title='Вход в игру' 
           // if the name is submit / falls der name submit lautet 
          begin
             InputImage.Click;  // click it / klick es 
          end;
         end;
       end;
     end;
   end;
 end;
не знаю почему, но этот код работает!!!!!!!!!!!!!
Спасибо всем!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!
В знак благодарности буду усердно помогать форумчанам!
[Ferox]
postal2 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно программно найти окно программы и нажать на нем кнопку SeRыЙ Win Api 23 09.03.2010 08:00
не могу нажать на кнопку 'Отправить' с помощью IdHTTP Dron_kss Работа с сетью в Delphi 3 17.04.2009 13:34
Нажать кнопку Dron_kss Работа с сетью в Delphi 1 28.03.2009 17:33
Программно нажать кнопку DeDoK Общие вопросы Delphi 2 04.05.2008 21:46
Нажать кнопку Teen4jump Работа с сетью в Delphi 11 29.02.2008 08:33