Delphi Can

Orjinalini görmek için tıklayınız: a Tagına tıklama
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
İyi günler, 


webde bulunan a href butonuna tıklama yaptırmak istiyorum fakat  bir türlü tıklama gerçekleşmiyor.
Faklı varyasyonlar da denedim fakat çözemedim a href butonuna tıklama işlemini nasıl yapabilirim?


      iDoc := coHTMLDocument.Create as IHtmlDocument2;
      iDoc.Write(Url);
      iDoc.Close;
      aHREFtag := iDoc.All.Tags('a');
      for iHref := 0 to aHREFtag.Length - 1 do
      begin
        if SameText(aHREFtag.Item(iHref).className, 'pagination-Go to next-separator') then
        begin
          aHREFtag.Item(0).click;
        end;


<a href="/xxxx_pg_1" aria-label="Go to next page, page 2" class="pagination-next-separator">Go to next<svg xmlns="http://www.w3.org/2000/svg" width="8" height="12" viewBox="0 0 8 12" focusable="false" aria-hidden="true">
class name olarak fazladan karakter almışsınız. Sametext function ilgili TAG'a odaklanamıyor.
SameText(aHREFtag.Item(iHref).className, "pagination-next-separator")
şeklinde bir denemek isteyebilirsiniz..
(04-10-2022, Saat: 19:42)mrmarman Adlı Kullanıcıdan Alıntı: [ -> ]class name olarak fazladan karakter almışsınız. Sametext function ilgili TAG'a odaklanamıyor.
SameText(aHREFtag.Item(iHref).className,  "pagination-next-separator")
şeklinde bir denemek isteyebilirsiniz..



Dikkatimden kaçmış; 


Sevgili Üstat araştırma yaparken sizin bir eksi paylaşımlarınıza denk geldim. 
Kod üzerinde Kendime göre düzenleme yaptım, ama bir türlü Next linkine tıklama yaptıramadım.
Acaba sorun FMX tarafından kaynaklanıyor? Next linkine tıklama yaptırmıyor olabilir mi?




 
   Doc := coHTMLDocument.Create as IHtmlDocument2;
    Doc.Write(WebUrl);
    Doc.Close;
    Sleep(3000); // Beklet
    BoolBool := False;
    Result := False;
    I := 0;
    XSayfa := Doc.All.Tags('span');
    iLinkSay := Integer(Doc.Links.Length);
    while (I < iLinkSay) And (Not BoolBool) And (iMaxSonarkiSayfa >= 0) do
    begin
      XLink := Doc.Links.Item(I).InnerText;
      XSayfa := Doc.Links.Item(I).className;
      if SameText(XLink, 'Next') then
      begin
        Dec(iMaxSonarkiSayfa); // Yoksa yeni sayfada aramaya devam edicez...
        Doc.Links(I).Click; // HATA ----- First chance exception at $00007FF99D71FAEC. Exception class EOleSysError with message 'Gerçeklenmemiş'. Process Aramalar.exe (15448)

        // Doc.Links.Item(I).Click;
        // Doc.Item(0).Click();
        // DeleteCharacter(Doc.Item(0).Click());
        //
        Sleep(3000); // Beklet
        I := 0;
        iLinkSay := Integer(Doc.Links.Length);
        XLink := Doc.Links.Item(I);
        Result := True;
      end;
      inc(i); // While
    end;
butonun tüm html kodunu yapıştırın, buton tagları arasında onclick eventi tanımlı değilse sizin bu sanal clickiniz çalışmaz, onun yerine click event mesajını göndermeniz veya ilgili butonun fonksiyonunu javascript ile tetiklemeniz gerekir.
(06-10-2022, Saat: 16:35)vedat35 Adlı Kullanıcıdan Alıntı: [ -> ]butonun tüm html kodunu yapıştırın, buton tagları arasında onclick eventi tanımlı değilse sizin bu sanal clickiniz çalışmaz, onun yerine click event mesajını göndermeniz veya ilgili butonun fonksiyonunu javascript ile tetiklemeniz gerekir.


Hocam javascript ile buton tetikleme işlemi nasıl yapılır diye webde araştırma yaptım bir şey bulamadım.
Örnek kod yada link paylaşır mısınız?
@Nedim

@vedat35 haklı. Click yapılamayabilir.

Şöyle yapın eğer 
Kod:
aHREFtag.Item(iHref).href

içeriğini sorgulayın bir URL geliyorsa onu direkt navigate ettirin. sanki click ettirmiş gibi olursunuz.
                      browser.execute_script( # JS.Element.Virtual.KeyChange
                                " var  element = document.getElementById('elementidadıburayayazilir'); "+
                               " var  evt = document.createEvent('HTMLEvents'); "+
                               " evt.initEvent('change', false, true); "+
                               " element.dispatchEvent(evt); "
                           )
                           break

örnek bir javascript event mesajı, change -> click olarak değiştirilmelidir, browser üzerinde javascript kodu execute ettirilmelidir.

html kodunu ve sayfa js leri incelemeden birşey söylemek zor.