![]() |
Re: Editfelder in Farmes einer Website ansprechen
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Wie gesagt, in der Zeile
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, StdCtrls, SHDocVw_TLB; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Button2: TButton; WebBrowser1: TWebBrowser; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Webbrowser1.Navigate(Edit1.TExt); end; procedure TForm1.Button2Click(Sender: TObject); var vDoc, vFrame, vForm: OleVariant; iFrame, iForm: Integer; sElement: string; begin //iFrame, iForm, sElement assumed valid vDoc := WebBrowser.OleObject.Document; vFrame := vDoc.frames.item(iFrame); vDoc := vFrame.contentWindow.Document; vForm := vDoc.forms.item(iForm); vForm.elements.item(sElement).value := '1'; end; end.
Delphi-Quellcode:
kommt die Fehlermeldung.
vDoc := WebBrowser.OleObject.Document;
|
Re: Editfelder in Farmes einer Website ansprechen
Du hast die Variable immer noch nicht an deine Situation angepasst - bei dir heißt sie WebBrowser1.
Delphi-Quellcode:
vDoc := WebBrowser1.OleObject.Document;
|
Re: Editfelder in Farmes einer Website ansprechen
:wall:
Stimmt. Danke |
Re: Editfelder in Farmes einer Website ansprechen
Und wie kriege ich jetzt raus, welce Werte ich für iFrame, iForm setzen muss, bzw. welchen Namen bei sElement?
Bei sElement muss ich ship202 zuweisen oder? Aber was bei dem rest :gruebel: Oder soll ich da jetzt so lange durchprobieren, bis es klappt? |
Re: Editfelder in Farmes einer Website ansprechen
Entweder du kennst den Namen des relevanten Frames oder du musst ihn über seinen Index (oder bei fehlender Eindeutigkeit des Namens über eine Kombination von beidem) ansprechen. Das gleiche gilt für die Form. Den Namen des Elements kennst du ja.
|
Re: Editfelder in Farmes einer Website ansprechen
Das ist das einzige, was ich zur Form finden kann
Delphi-Quellcode:
Ist da dann der Name das, was hinter Action steht?
<form action="index.php?page=flotten2&session=f3351aef02c1" method="POST">
Und das zum Frame
Delphi-Quellcode:
Ist jetzt der Name des frame 'content' oder 'overdiv'?
<div id='content'>
<center> <script src="js/friends.js"></script> <body> <div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div> Sry, aber ich hab Quelltextlesen vorher noch nicht gemacht. |
Re: Editfelder in Farmes einer Website ansprechen
Deine Form ist nicht benannt. Einen Namen hätte sie, wenn eines der beiden Universal-Attribute id oder name vorhanden wäre. Wenn es die einzige Form im Frame ist, dann ist iForm auf 0 zu setzen und damit sprichst du die Form über ihren korrekten Index an.
Um den Namen oder den Index des Frames zu ermitteln musst du dir das Dokument mit den FrameSets anschauen. Du zeigst ja schon das markup des relevanten Frame und darin findest du weder Namen noch Hinweis auf den Index des Frames. Wenn der Frame keinen Namen besitzt, dann musst du nur alle enthaltenen Frames bis zum gewünschten Frame mit 0 beginnend durchzählen um den Index zu ermitteln. |
Re: Editfelder in Farmes einer Website ansprechen
Wenn ich iFrame und Iform auf null setze krieg ich immer eine Acces Violation. was bedeutet das?
Sobald ich iFrame bzw. iForm etwas anderes als 0 zuweise kommt die Fehlermeldung "Mitglied nicht gefunden" -> heißt eigentlich, dass das Frame bzw. die Form nicht vorhanden ist. Nur warum ist diese Nachricht auf deutsch??? Das Programm ist eigentlich Englisch. |
Re: Editfelder in Farmes einer Website ansprechen
Du kannst ja noch versuchen die Struktur der Seite in einem TTreeView darzustellen.
Delphi-Quellcode:
var
vDoc, vFrame, vForm: OleVariant; iFrame, iForm, iElement: Integer; tn, tn2: TTreeNode; begin vDoc := Webbrowser1.OleObject.Document; for iFrame:= 0 to vDoc.frames.Length -1 do begin vFrame := vDoc.frames.item(iFrame); tn:= TreeView1.Items.Add(nil, Format('frame %d', [iframe])); for iForm := 0 to vFrame.Document.forms.Length- 1 do begin tn2:= TreeView1.Items.AddChild(tn, Format('form %d', [iForm])); vForm:= vFrame.Document.forms.item(iForm); for iElement := 0 to vForm.elements.Length- 1 do TreeView1.Items.AddChild(tn2, Format('element %d', [iElement])); end; end; TreeView1.FullExpand; |
Re: Editfelder in Farmes einer Website ansprechen
:pale: Funzt auch nicht...
"Zugriff verweigert". Scheinbar will der Betreiber nicht, dass seine Seite ausgelesen wird. Oder kann man das auch irgendwie umgehen? Fehler ab der Zeile
Delphi-Quellcode:
for iForm := 0 to vFrame.Document.forms.Length- 1 do
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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