Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.08;
Скачать: CL | DM;

Вниз

Тупое нажатие на кнопку   Найти похожие ветки 

 
Григорий   (2006-10-19 17:40) [0]

Облазил кучу сайтов но так и не нашёл ответа на задачу.
А задача состоит в том что-бы нажать на кнопку "ОК" на сайте www.territory.ru

пробдывал так:

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

и так:

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;

В результате ничего. Прошу помощи


 
SpellCaster   (2006-10-19 18:58) [1]

Если кнопка всегда на одном и том же месте, посылай мышиный клик окну браузера.


 
Плохиш ©   (2006-10-19 19:20) [2]


> пробдывал так:
>
> WebBrowser1.OleObject.Document.forms.item(0).elements.item(0).
> click;

Видно кнопка не является 0м элементом

>       (ovElements.item(i).Value = "Recent Charges") then

Точно текст в кнопке такой?


 
Dmitrij_K   (2006-10-19 23:33) [3]

Рабочий код на работе есть, завтра напишу


 
Плохиш ©   (2006-10-20 01:28) [4]


> Dmitrij_K   (19.10.06 23:33) [3]
> Рабочий код на работе есть, завтра напишу

У него тоже рабочий. Я даже знаю откуда он его тупо скопировал ;-)


 
Григорий   (2006-10-20 10:00) [5]

Вот код этой кнопки в HTML:
<INPUT onfocus=this.blur()
                       type=image height=20 alt="" width=37
                       src="Он лайн игра ТЕРРИТОРИЯ .files/ok.gif"
                       border=0>

Пытался тупо нажимать на всё:
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") then
     ovElements.item(i).Click;

но тоже без результатно.

С мышкой не подходит т.к. программа может быть свёрнутой.


 
Dmitrij_K   (2006-10-20 12:19) [6]

// нажатие на компонент
function WBClick(const aTagName,aTagParam,aParamValue:WideString):Boolean;
var
 j,k         : Integer;
 IDoc        : IHTMLDocument2;
 ITag        : IHTMLElement;
 ICollection : IHTMLElementCollection;
 p           : OleVariant;
begin
 Result := False;
 IDoc   := WB.GetDocument;
 if IDoc.all.tags(aTagName).QueryInterface(IHTMLElementCollection, ICollection)=S_OK then
 begin
   k := ICollection.length - 1;
   for j:=0 to k do
   begin
     if ICollection.item(j,0).QueryInterface(IHTMLElement, ITag)=S_OK then
     begin
       p := ITag.getAttribute(aTagParam, 0 or 2);
       if VarType(p)=varOleStr then
       begin
         if p=aParamValue then
         begin
           ITag.click;
           Application.ProcessMessages;
           Result := True;
           Break;
         end
       end
     end
   end
 end
end;

или
function WBClickbyName(const FieldName:WideString):Boolean;
var
 IDoc  : IHTMLDocument2;
 ITag  : IHTMLElement;
 IDisp : IDispatch;
begin
 Result := False;
 IDoc  := WB.GetDocument;
 IDisp := IDoc.all.item(FieldName,0);
 if (IDisp<>nil) and (IDisp.QueryInterface(IHTMLElement, ITag)=S_OK) then
 begin
   ITag.click;
   Application.ProcessMessages;
   Result := True;
   Break;
 end
end;

в твоем случае можно так
if WBClick("INPUT", "src", "Он лайн игра ТЕРРИТОРИЯ .files/ok.gif") then
 SHowmEssage("OK")


 
Dmitrij_K   (2006-10-20 12:22) [7]

и еще вместо
 IDoc  := WB.GetDocument;
 пиши
 if WebBrowser1.Document.QueryInterface(IHTMLDocument2, IDoc)=S_OK then

n.r. у меня не TWebBrowser а TEmbeddedWB


 
Григорий   (2006-10-21 11:12) [8]

большое спасибо Dmitrij_K. Всё работает на 5!!!


 
Григорий   (2006-10-21 12:46) [9]

Dmitrij_K подскажите какие данные нужно передать для вашей функции чтоб нажалась кнопка с таким html кодом:

<a href="#" class=b2 id="enter11795552" onclick="location.href="?sid=574bfecc54b008a68bd823d984048fdf&request_type=3&act ion=enter_request&request_id=1795552"; disableAllGroup(); return false;">  <nobr>в бой</nobr>  </a>


 
Dmitrij_K   (2006-10-21 16:02) [10]

WBClick("Имя тега", "имя параметра", "значение параметра")
WBClick("A", "id", "enter11795552")
если только ID всегда такой


 
Григорий   (2006-10-23 11:48) [11]

WBClick("A", "id", edit1.text)
узнаю id значение вручную и через edit ввожу. Результата нет.



Страницы: 1 вся ветка

Текущий архив: 2007.04.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
15-1173772062
In/Out
2007-03-13 10:47
2007.04.08
Регрессионный анализ???


2-1174343562
DemonVX
2007-03-20 01:32
2007.04.08
Как убрать исключение AccessViolation?


2-1174140292
sat
2007-03-17 17:04
2007.04.08
TChart


15-1173949620
DevilDevil
2007-03-15 12:07
2007.04.08
C++Builder. Реально ли не таскать за собой DLL?


1-1171423401
GuV
2007-02-14 06:23
2007.04.08
Создание ComboBox с нуля