Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Über TWebBrowser Java Link klicken (https://www.delphipraxis.net/165026-ueber-twebbrowser-java-link-klicken.html)

klaus9 11. Dez 2011 19:33

Über TWebBrowser Java Link klicken
 
Hallo,

ich habe folgendes Problem, ich möchte gerne für meine Webseite ein automatisches Dispo Tool schreiben.
Komme soweit auch sehr gut weiter. Derzeit hänge ich aber an einem Problem.

Ich kann nun mittels TWebBrowser fast alle Links ansteuern über

WebBrowser.OleObject.Document. z.B. über Links oder andere.

Auf meiner Webseite sind Java funktionen, die ich leider nicht ansprechen kann.

Teile des HTML Codes.

<a class="linkButton" href="javascript:void(false);" onclick="togglePanel(this,'advancedFilterPanel','E rweiterte Filter einblenden','Erweiterte Filter ausblenden');">
Erweiterte Filter einblenden
</a>

Wenn ich im Web bin und auf "Erweiterte Filter einblenden" klicken kann ich das Datum einstellen.. Nur ich schaffe es nicht, das Delphi auf dieses Feld "Erweiterte Filter einblenden" klickt.

Habe auch mal versucht den Link direkt anzusprechen nur zeigt mir der Browser nur "javascript:void(false)" an.


Hat jemand eine Lösung für mein Problem ?

Was ich ebenfalls nicht ansteuern kann da Java ist folgender teil des HTML Code

<tr onclick="$('#list_entry_1').triggerHandler('click' );">
<tr onclick="$('#list_entry_2').triggerHandler('click' );">
usw.


Vielleicht hat ja irgendjemand einen Tipp für mich

Danke

Bernhard Geyer 11. Dez 2011 19:48

AW: Über TWebBrowser Java Link klicken
 
Zitat:

Zitat von klaus9 (Beitrag 1140850)
Auf meiner Webseite sind Java funktionen, ...

<a class="linkButton" href="javascript:void(false);"

Was denn nun? Java oder JavaScript?

Wenn es deine Webseite ist: Wieso stellst du nicht ein vernünftiges JSON oder wenn es sein muss ein SOAP-Interface bereit über den du das vernünftig erledigen kannst.

Sowas über die HTML-Ergebnis zu versuchen ist umständlich und fehleranfällig.

klaus9 11. Dez 2011 20:16

AW: Über TWebBrowser Java Link klicken
 
Hi nein das ist leider nicht meine webseite, sondern die meines auftraggebers.

Bernhard Geyer 11. Dez 2011 21:05

AW: Über TWebBrowser Java Link klicken
 
Zitat:

Zitat von klaus9 (Beitrag 1140859)
Hi nein das ist leider nicht meine webseite, sondern die meines auftraggebers.

Dann solltest du diesem erklären das eine API-Schnittstelle die sinnvollere Lösung ist.

klaus9 12. Dez 2011 05:58

AW: Über TWebBrowser Java Link klicken
 
Werden die leider nicht machen. Deshalb muß ich es irgendwie anders hinbekommen ..

klaus9 26. Dez 2011 12:44

AW: Über TWebBrowser Java Link klicken
 
Gibt es denn noch Befehle um eine Möglichkeit zu schaffen die Javascripts anzusteuern.

habe schon viele möglichkeiten probiert.

Webbrowser1.Navigate('javascript:void(true)' );
oder mit

WebBrowser1.OleObject.Document.Forms.item(0).eleme nts.item(xx).click; Nur gibt es leider diesen Button nicht
als Zahl, habe alle 1-130 durch geklickt.

oder mit folgendem Code

var link,s:string;
I:integer;
mylink:olevariant;
begin
s:='';
mylink:='';
for I := 0 to WebBrowser1.OleObject.Document.links.Length - 1 do begin
s:=WebBrowser1.OleObject.Document.links.Item(I).In nerText;
if s='Alles auswählen' then mylink := WebBrowser1.OleObject.Document.links.Item(I);
end;
webbrowser1.Navigate(mylink);

funktioniert leider auch nicht..

auch mit folgendem komme ich nicht zum ergebnis

WebBrowser1.OleObject.document.getElementById('adv ancedFilterPanel').elements.item(1).click;


habe noch was im internet gefunden funktioniert aber leider auch nicht

procedure TForm1.Button1Click(Sender: TObject);
var
ovElements: OleVariant;
i: Integer;
begin
ovElements := WebBrowser1.OleObject.Document.Forms.Item( 0 ).Elements;
for i := 0 to ( ovElements.Length-1 ) do
if ( AnsiUpperCase( ovElements.Item( i ).tagName ) = 'INPUT' ) then
if ( AnsiUpperCase( ovElements.Item( i ).type ) = 'SUBMIT' ) or
( AnsiUpperCase( ovElements.Item( i ).type ) = 'BUTTON' ) then
if ( ovElements.item( i ).Value = 'Some text' ) then
ovElements.Item( i ).Click;
end;



Hmm bei mir habe ich im Code stehen

<a class="linkButton" href="javascript:void(false);" onclick="togglePanel(this,'advancedFilterPanel','E rweiterte Filter einblenden','Erweiterte Filter ausblenden');">
Erweiterte Filter einblenden
</a>

<br/><br/>

<div id="advancedFilterPanel" style="display:none;">

<input type="hidden" value="false" name="advancedFilterPanel:isVisibleInput" id="advancedFilterPanel_isVisibleField"/>

Diesen müßte ich ansteuern.

Ein weiteres Problem habe ich weiter unten auf der HTML Seite

&nbsp;&nbsp;

(<a href="javascript:void(false);" onclick="toggleCheckboxes('auftragGroup', true);">Alle auswählen</a>&nbsp;/&nbsp;
<a href="javascript:void(false);" onclick="toggleCheckboxes('auftragGroup', false);">Auswahl entfernen</a>)

&nbsp;&nbsp;

Ich müßte irgendwie auf das
(<a href="javascript:void(false);" onclick="toggleCheckboxes('auftragGroup', true);">Alle auswählen</a>
klicken..

Habe mir auch mal eine Listbox gemacht die mir alle Links raussucht auf der Webseite und die man über die Listbox auch anklicken kann, aber leider funktionieren Javascripts nicht darüber :-(

Hat jemand eine Idee ?

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz