İ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.
@
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.