Thread View: pl.comp.lang.delphi
10 messages
10 total messages
Started by konsul41
Tue, 10 Jan 2017 08:57
Delphi Webbrowser JavaScript
Author: konsul41
Date: Tue, 10 Jan 2017 08:57
Date: Tue, 10 Jan 2017 08:57
18 lines
1437 bytes
1437 bytes
Delphi XE2 Strona Portal podatkowy MF sprawdzanie VAT fragment strony https://ppuslugi.mf.gov.pl/ <li class="SidebarLink"><a title="" class="SidebarLink SidebarLinkChVAT" onclick="FWDC.executeAction(1005, null, 'FLOW');" href="javascript:;">Sprawdź podmiot w VAT</a></li> Jak z poziomu Delphi w WebBrowser1DocumentComplete symulować kliknięcie w ten link i przejść do niego? --- Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast. https://www.avast.com/antivirus
Re: Delphi Webbrowser JavaScript
Author: konsul41
Date: Wed, 11 Jan 2017 09:08
Date: Wed, 11 Jan 2017 09:08
110 lines
3896 bytes
3896 bytes
Próbuję przeszukiwać Dokument tak:
Doc := WebBrowser1.Document as IHTMLDocument2;
allLinks := Doc.all;
Memo1.Lines.Clear;
for i :=0 to allLinks.length-1 do
begin
firstLink := allLinks.Item(i,'') as IHTMLElement;
if firstLink.className='PageWrapper' then
begin
allLinks:=firstLink.Get_all AS IHTMLElementCollection;
break;
end;
end;
for i :=0 to allLinks.length-1 do
begin
//try
firstLink := allLinks.Item(i,'') as IHTMLElement;
//listall(firstLink.Get_all AS IHTMLElementCollection);
if firstLink.className='ContentWrapper' then
begin
allLinks:=firstLink.Get_all AS IHTMLElementCollection;
break;
end;
end;
for i :=0 to allLinks.length-1 do
begin
try
firstLink := allLinks.Item(i,'') as IHTMLElement;
if firstLink.ID='FAST_MANAGER_PLACEHOLDER' then
begin
listall(firstLink.Get_all AS IHTMLElementCollection);
url1:=firstLink.toString;
//allLinks:=firstLink.Get_all AS IHTMLElementCollection;
break;
end;
except
end;
end;
Wynik listowania:
1-pętla
[object HTMLDivElement] title ---- className --PageWrapper-- ID ----
tagname --DIV--
2-pętla
[object HTMLDivElement] title ---- className --ContentWrapper-- ID ----
tagname --DIV--
<div class="ContentWrapper">
<noscript><div class="NoScript">Javascript must be enabled to
use this site.</div></noscript><script
type="text/javascript">FWDC.setVerLast('1._.fkgudDs1XuqrlNK9nTmwotpnlFs1',
'HTML: _ [Page,443036130] @ 2017-01-11 09:52:28.6655')
</script><script>FWDC.loadManager();</script>
<div id="FAST_MANAGER_PLACEHOLDER"></div>
<div class="clearer"></div>
</div>
---- listall
length 0
---- listall
[object HTMLDivElement] title ---- className ---- ID
--FAST_MANAGER_PLACEHOLDER-- tagname --DIV-- type
<div id="FAST_MANAGER_PLACEHOLDER"></div>
W ostatniej pętli Dostaję FAST_MANAGER_PLACEHOLDER a powinienem dostać
id="MANAGER_CONTAINER__0"
lub
class="ManagerContainer ManagerContainer_Fast_TAP NonLoggedOn
HasNavigation SidebarPinned"
To widzę w InternetExplorer gdy nacisnę "Sprawdź element" z menu.
<div tabindex="100" title="" class="ManagerContainer
ManagerContainer_Fast_TAP NonLoggedOn HasNavigation SidebarPinned"
id="MANAGER_CONTAINER__0">
Co to za technika ukrywania i jak to obejść?
---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast.
https://www.avast.com/antivirus
Re: Delphi Webbrowser JavaScript
Author: zpksoft
Date: Wed, 11 Jan 2017 09:08
Date: Wed, 11 Jan 2017 09:08
27 lines
2054 bytes
2054 bytes
W dniu wtorek, 10 stycznia 2017 09:57:36 UTC+1 użytkownik kons...@wp.pl napisał: > Delphi XE2 > > Strona Portal podatkowy MF sprawdzanie VAT > > fragment strony > https://ppuslugi.mf.gov.pl/ > > <li class="SidebarLink"><a title="" class="SidebarLink SidebarLinkChVAT" > onclick="FWDC.executeAction(1005, null, 'FLOW');" > href="javascript:;">Sprawdź podmiot w VAT</a></li> > > > Jak z poziomu Delphi w WebBrowser1DocumentComplete symulować kliknięcie > w ten link i przejść do niego? > > --- > Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast. > https://www.avast.com/antivirus Myślę, że jest kilka dróg. Najprościej bezpośrednio do html-a przed wczytaniem do webbrowsera wstrzyknąć taki kod (od razu się wykona): <script> FWDC.executeAction(1005, null, 'FLOW'); </script> Paweł
Re: Delphi Webbrowser JavaScript
Author: konsul41
Date: Wed, 11 Jan 2017 09:09
Date: Wed, 11 Jan 2017 09:09
7 lines
1278 bytes
1278 bytes
Nie napisałem, w Webbrowser widzę prawidłową stronę i mogę wykonywać wszystkie operacje. --- Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast. https://www.avast.com/antivirus
Re: Delphi Webbrowser JavaScript
Author: zpksoft
Date: Wed, 11 Jan 2017 09:15
Date: Wed, 11 Jan 2017 09:15
16 lines
1560 bytes
1560 bytes
W dniu środa, 11 stycznia 2017 10:08:31 UTC+1 użytkownik kons...@wp.pl napisał: > Próbuję przeszukiwać Dokument tak: > > Doc := WebBrowser1.Document as IHTMLDocument2; > allLinks := Doc.all; >ciach Straszny kod (jak dla mnie :) Szukająć łączy wyodrębnił bym "ręcznie" podciągi z html-a: od href=" do " Paweł
Re: Delphi Webbrowser JavaScript
Author: konsul41
Date: Wed, 11 Jan 2017 09:27
Date: Wed, 11 Jan 2017 09:27
47 lines
2522 bytes
2522 bytes
> Straszny kod (jak dla mnie :)
Błądzę i próbuję przeszukiwać na ślepo.
> Szukająć łączy wyodrębnił bym "ręcznie" podciągi z html-a:
>
> od href="
>
> do "
>
Problem w tym że linki za każdym razem są inne
https://ppuslugi.mf.gov.pl/_/#10
https://ppuslugi.mf.gov.pl/_/#12
itd.
to z paska przeglądarki
dodatkowo na stronie docelowej
przycisk jest w HTML tak:
<button name="b-8" tabindex="100" class="EnabledLink ShowInvalidLink"
id="b-8" style="width: 150px; height: 22px;"
onclick="FWDC.eventOccurred(event, 'b-8'); return false;"
type="button">Sprawdź</button>
oczywiście
WebBrowser1.OleObject.Document.GetElementByID('b-8').Click;
nie działa.
dobrze że działa chociaż
WebBrowser1.OleObject.Document.getElementById('b-7').value:='XXXXXXXXXX';
przy HTML
<input name="b-7" tabindex="100" title="" class="FieldEnabled
FieldRequired DocControlMask watermark" id="b-7"
aria-describedby="qtip-11" style="width: 150px; height: 22px;"
onkeydown="FWDC.onDocFieldKeyDown(this, event);"
onfocus="FWDC.onDocFieldGotFocus(this, event);"
onblur="FWDC.onDocFieldLostFocus(this, event);" type="text" value=""
autocomplete="off" data-hasqtip="11" oldtitle="Pole
wymagane Format:9999999999">
---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast.
https://www.avast.com/antivirus
Re: Delphi Webbrowser JavaScript
Author: konsul41
Date: Wed, 11 Jan 2017 10:21
Date: Wed, 11 Jan 2017 10:21
25 lines
1927 bytes
1927 bytes
> dodatkowo na stronie docelowej
> przycisk jest w HTML tak:
> <button name="b-8" tabindex="100" class="EnabledLink ShowInvalidLink"
> id="b-8" style="width: 150px; height: 22px;"
> onclick="FWDC.eventOccurred(event, 'b-8'); return false;"
> type="button">Sprawdź</button>
>
> oczywiście
> WebBrowser1.OleObject.Document.GetElementByID('b-8').Click;
> nie działa.
najlepsze jest że go znajduje ale nie działa click
kod
doc := webbrowser1.Document as IHTMLDocument2;
WebBrowser1.OleObject.Document.getElementById('b-7').value:='XXXXXXXXXX';
klik:= doc.all.item('b-8',0) as IHTMLElement;
ShowMessage(klik.className);
klik.click;
pokazuje prawidłową nazwę klasy.
---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast.
https://www.avast.com/antivirus
Re: Delphi Webbrowser JavaScript
Author: konsul41
Date: Wed, 11 Jan 2017 10:34
Date: Wed, 11 Jan 2017 10:34
18 lines
1885 bytes
1885 bytes
> Myślę, że jest kilka dróg. Najprościej bezpośrednio do html-a przed wczytaniem do webbrowsera wstrzyknąć taki kod (od razu się wykona): > > <script> > FWDC.executeAction(1005, null, 'FLOW'); > </script> > W przeglądarce pokazując źródło strony widzę od razu <div id="FAST_MANAGER_PLACEHOLDER"></div> mógłbyś podpowiedzieć w które miejsce wstrzyknąć? Jako pierwsze w body? --- Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast. https://www.avast.com/antivirus
Re: Delphi Webbrowser JavaScript
Author: konsul675
Date: Wed, 11 Jan 2017 11:23
Date: Wed, 11 Jan 2017 11:23
10 lines
1379 bytes
1379 bytes
> od href=" > > do " > > Ale tam jest href="javascript:;" więc na pewno nie o to chodzi
Re: Delphi Webbrowser JavaScript
Author: zpksoft
Date: Wed, 11 Jan 2017 18:38
Date: Wed, 11 Jan 2017 18:38
22 lines
2237 bytes
2237 bytes
W dniu środa, 11 stycznia 2017 11:34:12 UTC+1 użytkownik kons...@gmail.com napisał: > > Myślę, że jest kilka dróg. Najprościej bezpośrednio do html-a przed wczytaniem do webbrowsera wstrzyknąć taki kod (od razu się wykona): > > > > <script> > > FWDC.executeAction(1005, null, 'FLOW'); > > </script> > > > W przeglądarce pokazując źródło strony widzę od razu <div > id="FAST_MANAGER_PLACEHOLDER"></div> > > mógłbyś podpowiedzieć w które miejsce wstrzyknąć? > Jako pierwsze w body? > > > > --- > Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast. > https://www.avast.com/antivirus Na samym końcu, przed </body> Strona się załaduje a następnie wykona ten kod.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads