![]() |
Link einer Seite anklicken
Hallo
Ist es möglich einen Link "virtuell" anzuklicken? Wenn ja wär ich euch sehr dankbar, wenn ihr mir sagt wie, den ich bin am verzweifeln. In meinem Fall handelt es sich um 2 Frames. Es ist kein Problem, die Links zu finden, nur weiß ich nicht, wie ich sie "anklicke", damit die Frames erhalten bleiben. MfG Moyyer |
Re: Link einer Seite anklicken
Hallo,
zum Anklicken verwendet du die Methode Click() des anchors, aber ob die frames dabei erhalten bleiben oder nicht, darüber hast du so keine Kontrolle. Willst du die Kontrolle behalten, dann musst du dir den Wert des href-Attributes besorgen und das Ziel selbst zu bestimmen. Grüße vom marabu |
Re: Link einer Seite anklicken
Hallo marabu
Kannst du mal ein kleines Beispiel schreiben, hab keine Ahnung, wie ich den Anchor anklicke. (Geht auch erstmal ohne Frames) |
Re: Link einer Seite anklicken
Okay, nimm meinen Code, den ich dir in deinen anderen
![]()
Delphi-Quellcode:
Das sollte den ersten link im frame anklicken.
// ...
ShowMessage(win.document.links(0).click); marabu |
Re: Link einer Seite anklicken
hallo.
sorry, das es so lange gedauert hat. war 2 tage nicht da. dein code funktioniert leider nicht. "links" besitzt leider kein "click" Gibts noch eine andere möglichkeit??? mfg moyyer |
Re: Link einer Seite anklicken
Sorry, aber in meinem vorigen posting war ich wohl nicht ganz bei mir. Hier hast du Code, der funktioniert. Ich habe eine WebBrowser-Komponente auf eine Form gezogen und lade über ein Edit-Feld einen URL mit Frames.
Delphi-Quellcode:
Viel Spaß damit.
// uses MSHTML;
procedure TWebForm.LoadButtonClick(Sender: TObject); begin with WebBrowser do Navigate(Edit.Text); end; procedure ShowLinks(ec: IHTMLElementCollection); var v: OleVariant; u: IUnknown; anchor: IHTMLAnchorElement; s: TStrings; begin s := TStringList.Create; v := 0; while v < ec.length do begin u := ec.item(v, null); if u.QueryInterface(IHTMLAnchorElement, anchor) = 0 then s.Add(anchor.href); v := v + 1; // so kommst du übrigens an die Click-Methode: // with anchor as IHTMLElement do click; end; ShowMessage(s.Text); s.Free; end; procedure ShowFrames(fc: IHTMLFramesCollection2); var v: OleVariant; win: IHTMLWindow2; u: IUnknown; begin v := 0; while v < fc.length do begin u := fc.item(v); if u.QueryInterface(IHTMLWindow2, win) = 0 then ShowLinks(win.document.links); v := v + 1; end; end; procedure TWebForm.DemoButtonClick(Sender: TObject); var doc: IHTMLDocument2; begin doc := WebBrowser.Document as IHTMLDocument2; ShowFrames(doc.frames); end; marabu |
Re: Link einer Seite anklicken
hallo marabu
dein code hat soweit (auf'm Localhost) funktioniert. Bei praktischer Anwendung im Internet kam bei "ShowLinks" ein "Zugriff Verweigert". Der Link, auf dem ich klicken will, befindet sich auf einer frameseite (übrigens toll, das du frames gleich mit eingebunden hast.) Gibt es eine möglichkeit diesen "Zugriff verweigert" zu umgehen oder woran liegt es? Mfg Moyyer |
Re: Link einer Seite anklicken
Hallo Moyyer,
kann es sein, dass du IFrames und Frames in einen Topf geworfen hast? Damit es dabei keine Probleme gibt musst du den Code in DemoButtonClick so anpassen:
Delphi-Quellcode:
Grüße vom marabu
procedure TWebForm.DemoButtonClick(Sender: TObject);
var doc: IHTMLDocument2; fs: IHTMLFrameSetElement; begin doc := WebBrowser.Document as IHTMLDocument2; if Succeeded(doc.body.QueryInterface(IHTMLFrameSetElement, fs)) then ShowFrames(doc.frames) else ShowLinks(doc.links); end; |
Re: Link einer Seite anklicken
Hi Marabu
Der Fehler kommt leider immernoch :cry: . Immnoch bei Showlinks Auf der "Main" Frameseite sind nochmal IFrames eingebettet. wusste nicht, das es da einen unterschied gibt. Der Link öffnet ein javascript, aber ich denke, daran kann es nicht liegen oder? (Javascript ist aktiviert) Falls du keine Idee mehr hast, kann ich dir ja mal den Seitenquellcode schicken. MFG Moyyer |
Re: Link einer Seite anklicken
Ich hätte dich jetzt um den URL gebeten, da ich ohne ein greifbares Beispiel nur noch im Nebel stochern kann.
marabu |
Re: Link einer Seite anklicken
|
Re: Link einer Seite anklicken
Aber wie gsesagt, auf'm Localhost funktioniert es, nur im Internet nicht, leider....
|
Re: Link einer Seite anklicken
Waldteufel hat deine drei Seiten auf seinem Server im LAN bereit gestellt und ich habe mit meinem Code auf die Datei index.html per HTTP zugegriffen. Es wurde ein FrameSet mit zwei Frames entdeckt. Im ersten Frame werden 25 Links ausgewiesen, im zweiten 5 Links. Ich habe dann meinen Testcode so modifiziert, dass er im zweiten Frame den letzten Link anklickt - javascript:maxShips() - was die Ausgabe einer AlertBox mit dem Text 'hallo' verursachte.
Was sollen wir noch testen? marabu |
Re: Link einer Seite anklicken
Ich kann mir leider auch nicht erklären, warum es im Lan funktioniert und im Internet nicht.
Ich hab es alles mal ein bisschen vereinfacht, um herauszufinden in welcher zeile er die fehlermeldung bringt und rausgekommen ist jene:
Delphi-Quellcode:
Der Webrrowser bekommt keinen Zugriff auf die Anzahl der Links auf der Seite und kann deswegen auch keinen Klick ausführen.
while v1 < win.document.links.length do
Wenn du keine Ideen mehr hast, müssen wir es halt lassen... |
Re: Link einer Seite anklicken
Hallo Andreas,
ich habe mir mal die Seite im Netz angesehen. Dort wird ein Login verlangt, wodurch eine Session aufgebaut wird. Die Session wird eventuell in einem Cookie gespeichert. Wenn mein Code in deinem Programm eine Meldung "Zugriff verweigert" produziert, dann handelt es sich ja wohl um eine Meldung des ogame servers, die von deinem WebBrowser ausgegeben wird - oder verstehe ich da etwas falsch? Das liegt dann ganz einfach daran, dass die notwendige session Information nicht bereit steht, wenn du auf die Hauptseite zugreifst. Nebenbei bemerkt - bist du sicher, dass es legal ist dich dort automatisiert anzumelden? Aus den AGB Paragraph 4 Absatz II Es ist verboten, jegliche Seiten von OGame mit anderen Programmen außer dem Browser abzurufen. Freundliche Grüße vom marabu |
Re: Link einer Seite anklicken
Ich melde mich mit meinem Browser ohne autmatisierten Login an, also legal. Und einen eigenen Browser darf ich ja wohl benutzen, oder?
Dein Tipp mit dem Sessioninformationen verfolge ich mal weiter. Es kann sein, dass ich was übersehen habe. Mfg Moyyer |
Re: Link einer Seite anklicken
Du kannst machen was du willst. Ich habe kaum Ahnung von Spielen und gar keine von Online-Spielen, aber ein Blick auf die Nutzungsbedingungen hat mich klar erkennen lassen, dass der Betreiber keinen Zugriff über einen agent wünscht. Eine Analyse der log files kann einen agent zuverlässig erkennen. Mir egal.
Dein ursprüngliches Problem scheint mir gelöst. Ich ziehe mich jetzt zurück. Schönes Wochenende marabu |
Re: Link einer Seite anklicken
Bin jetzt alles nochmal durchgegangen und hab den Fehler gefunden. :wall:
Der Code, welchen marabu gepostet hat, funktioniert einwandfrei. Vielen Dank :thumb: |
Re: Link einer Seite anklicken
Du handelst trotzdem illegal...
Zitat:
Lass es also sein und spiele ehrlich bevor dein Account gesperrt wird... MfG Florian :hi: |
Re: Link einer Seite anklicken
ich kann nur nochmal wiederholen, was ich schonmal gesagt habe.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz