Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
a Tagına tıklama
#1
İ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">
Cevapla
#2
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..
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
(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;
Cevapla
#4
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.
Cevapla
#5
(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?
Cevapla
#6
@Nedim

@vedat35 haklı. Click yapılamayabilir.

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

içeriğini sorgulayın bir URL geliyorsa onu direkt navigate ettirin. sanki click ettirmiş gibi olursunuz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
                      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.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Web butona tıklama - Çözüldü Altıner 2 180 13-03-2024, Saat: 16:42
Son Yorum: Altıner
  birden fazla butona tıklama Mr.Developer 9 6.401 12-02-2019, Saat: 11:17
Son Yorum: Mr.Developer
  Tıklama ve mentin Alanları Doldurma nurah 6 3.810 06-09-2018, Saat: 17:26
Son Yorum: nurah



Konuyu Okuyanlar: 1 Ziyaretçi