🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
10 messages
10 total messages Started by konsul41 Tue, 10 Jan 2017 08:57
Delphi Webbrowser JavaScript
#345521
Author: konsul41
Date: Tue, 10 Jan 2017 08:57
18 lines
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
#345525
Author: konsul41
Date: Wed, 11 Jan 2017 09:08
110 lines
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>&lt;div class="NoScript"&gt;Javascript must be enabled to 
use this site.&lt;/div&gt;</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
#345522
Author: zpksoft
Date: Wed, 11 Jan 2017 09:08
27 lines
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
#345530
Author: konsul41
Date: Wed, 11 Jan 2017 09:09
7 lines
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
#345526
Author: zpksoft
Date: Wed, 11 Jan 2017 09:15
16 lines
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
#345528
Author: konsul41
Date: Wed, 11 Jan 2017 09:27
47 lines
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&#10;&#10;Format:9999999999">

---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast.
https://www.avast.com/antivirus
Re: Delphi Webbrowser JavaScript
#345529
Author: konsul41
Date: Wed, 11 Jan 2017 10:21
25 lines
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
#345523
Author: konsul41
Date: Wed, 11 Jan 2017 10:34
18 lines
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
#345527
Author: konsul675
Date: Wed, 11 Jan 2017 11:23
10 lines
1379 bytes
> od href="
> 
> do "
> 
> 

Ale tam jest 
href="javascript:;"
więc na pewno nie o to chodzi
Re: Delphi Webbrowser JavaScript
#345524
Author: zpksoft
Date: Wed, 11 Jan 2017 18:38
22 lines
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