WebBrowser jak kliknąć przycisk, który nie ma atrybutu ID

Odpowiedz Nowy wątek
2019-06-12 13:51
0

Chcę w Delphi 7 w WebBrowser logować się do ING (https://login.ingbank.pl/mojeing/app/#login)
wpisuję login

Doc3.getElementById(id).setAttribute('value', 'mójlogin', 0);

chcę kliknąć przycisk "dalej" (zazwyczaj używałem doc3.getElementById('nie znam tego id').click;- ale przycisk nie ma nadanego id);
fragment strony:

<input name="login" class="form-control" id="login-input" autofocus="autofocus" type="text" maxlength="10" autocomplete="off">
<button class="button primary medium js-login btn-disabled">
<span class="sr-only">Przejdź do wpisywania hasła</span> <span aria-hidden="true">Dalej</span>  </button>

Jak wywołać kliknięcie tego przycisku?.

edytowany 1x, ostatnio: furious programming, 2019-06-14 15:00

Pozostało 580 znaków

2019-06-12 14:29
0

Użyj:

document.getElementsByTagName('button')
edytowany 1x, ostatnio: furious programming, 2019-06-12 15:32
Kod wstawiamy w znaczniki kolorujące składnię – ```pascal przed kodem, a po kodzie samo ``` - furious programming 2019-06-12 15:32

Pozostało 580 znaków

2019-06-14 12:05
0

Dziękuję za odpowiedź, ale nadal nie mogę sobie poradzić.

Mam takie kody:
wywołuję stronę przyciskiem, ale tu też mam problem. Po kliknięciu przycisku i wyświetleniu strony muszę ponownie kliknąć przycisk wywołania strony, żeby program analizował formularz.
'WebBrowser2.Navigate('https://login.ingbank.pl/mojeing/app/#login');'

W zdarzeniu WebBrowser2 dodałem kod:

procedure TForm1.WebBrowser2DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  Elements: IHTMLElementCollection;
  elem: IHTMLInputElement;
  i: Integer;
  CurrentBrowser: IWebBrowser2;
  TopBrowser: IWebBrowser2;
  Doc3 :  IHTMLDocument3;
begin
  try
  CurrentBrowser := pDisp as IWebBrowser2;
  TopBrowser := (Sender as TWebbrowser).DefaultInterface;
  if Assigned(CurrentBrowser) and Assigned(TopBrowser) then
    begin //if assigned
    if CurrentBrowser = TopBrowser then
      begin    //if CurrentBrowser
      Doc3 := CurrentBrowser.Document as IHTMLDocument3;
      Doc3.getElementById('login-input').setAttribute('value', 'login', 0);
      Elements:= Doc3.getElementsByTagName('input');
      if Assigned(Elements) then
        begin  //   if Assigned(Elements)
        for i:=0 to Elements.length - 1 do
          begin //for i
          elem:= Elements.item(i, EmptyParam) as IHTMLInputElement;
          try
          if  Pos('button', elem.src) >= 0 then
            begin
            OleVariant(elem).click;         showmessage('click');
            end;
          except
          showmessage('błąd przycisku');
          end;
          end; //for i
        end;   //   if Assigned(Elements)
      end;     //if CurrentBrowser
    end;//if assigned
  except
  showmessage('błąd WebBrowser2DocumentComplete');
  end;
end;

Jak użyję

Doc3.getElementsByTagName('button');

to w

if  Pos('button', elem.src) >= 0 then

nie znajduje button

Jak użyję

Doc3.getElementsByTagName('input');

to w

if  Pos('button', elem.src) >= 0 then

znajduje przycisk, to wyświetla showmessage, ale nie klika w przycisk.

Proszę o podpowiedź.

edytowany 3x, ostatnio: furious programming, 2019-06-14 14:59
Wstawiaj kod w znaczniki kolorujące składnię. Jeśli nie znasz ich na pamięć to korzystaj z przycisków nad polem odpowiedzi. - furious programming 2019-06-14 15:01

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0