Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Geschwindigkeitsmessung eines Seitenaufrufs (https://www.delphipraxis.net/179549-geschwindigkeitsmessung-eines-seitenaufrufs.html)

Ajintaro 14. Mär 2014 13:32

Geschwindigkeitsmessung eines Seitenaufrufs
 
Hey DP,

ich möchte gerne protokollieren wie lange es dauert, von einer Start-Webseite einen Seitenaufruf durchzuführen. Spontan würde ich das mit einer TTimer Komponente messen.
Startzeitpunkt: TWebBrowser --> OnBeforeNavigate2 Timer aktivieren
Endzeitpunkt: TWebBrowser: --> OnDocumentComplete Timer anhalten und auswerten

Und das alle 5 Minuten mit einer weiteren Timer-Komponente

Gibt es da andere Mechanismen/Hilfsmittel um einen Seitenaufruf zu monitoren oder ist mein Vorgehen durchaus nutzbar ?

haentschman 14. Mär 2014 13:44

AW: Geschwindigkeitsmessung eines Seitenaufrufs
 
noch einfacher... 8-)

GetTickCount (Unit Windows) beim Betreten holen und merken und bei HabeFertig holen und die Differenz berechnen...

mjustin 14. Mär 2014 16:55

AW: Geschwindigkeitsmessung eines Seitenaufrufs
 
Zitat:

Zitat von Ajintaro (Beitrag 1252014)
Gibt es da andere Mechanismen/Hilfsmittel um einen Seitenaufruf zu monitoren oder ist mein Vorgehen durchaus nutzbar ?

Der einfachste Weg - falls kein JavaScript im Spiel ist - wäre eine nichtvisuelle HTTP Komponente wie TIdHTTP zu verweden, und einen HTTP GET Request auf die Zielseite durchzuführen und seine Ausführungszeit zu messen.

Der schöne Günther 14. Mär 2014 17:08

AW: Geschwindigkeitsmessung eines Seitenaufrufs
 
Ich möchte jetzt kein Schlauscheißer sein, aber was ist denn ein "Seitenaufruf"? Das XML/HTML-Dokument übertragen? Das Dokument und alle direkt referenzierten Dateien (Grafiken, Stylesheets, ...) laden? Das Dokument komplett aufbauen und grafisch auf den Bildschirm bringen?
Was ist mit dem ganzen JavaScript das erst im Nachinein anfängt, weitere Skripte und Medien von externen Quellen nachzuladen?

Ajintaro 14. Mär 2014 19:20

AW: Geschwindigkeitsmessung eines Seitenaufrufs
 
Hmm das sind durchaus berechtigte Fragen. Im Prinzip möchte ich hier nur nach einem Flug suchen und schauen, wie lange es dauert bis das Suchergebnis erscheint.
Leider stoße ich da auf 2 blöde Probleme:

(1)
Mit einem Button wollte ich die Minimalangaben des Formulars ausfüllen:
Delphi-Quellcode:
//Abflug von
WebBrowser1.OleObject.Document.getElementById('f-originName0').value := 'Frankfurt, Frankfurt/Main International (FRA), Deutschland';
//Ankunft in
WebBrowser1.OleObject.Document.getElementById('f-destinationName0').value := 'Baltimore, Baltimore - Washington International, DC (BWI), USA';
//Datum
WebBrowser1.OleObject.Document.getElementById('fdepdateDisplay').value := 'Mi, 02.08.2014';
WebBrowser1.OleObject.Document.getElementById('fretdateDisplay').value := 'Mi, 20.08.2014';
Alle Formulare werden ausgefüllt, nur wird das Datum nicht akzeptiert. Man muss mit der Maus auf diesen blöden Datepicker klicken, ich bekomme das nicht ohne manuellen Eingriff hin.

(2)
Sobald ich den "Flüge Suchen" button betätige, wirft die TWebbrowser Komponent den berühmten "Skriptfehler". Es gibt einige Suchtreffer hier im Forum, allerdings sind die etwas älter und schlagen den silent-mode oder einen Registry-Eingriff vor. Hat beides nichts gebracht.

Und wie der Thread-Titel schon hergibt, will ich nur messen wie lange es dauert, bis man sein Suchergebnis angezeigt bekommt:

Delphi-Quellcode:
procedure TForm4.WebBrowser1BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; const URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
 tick_Start:=GetTickCount;
end;

procedure TForm4.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; const URL: OleVariant);
begin
 tick_end:=GetTickCount;
//wie viele ms hat es nun gedauert ? 
l_1.Caption := inttostr(tick_end-tick_start);
end;

BUG 16. Mär 2014 00:02

AW: Geschwindigkeitsmessung eines Seitenaufrufs
 
Wenn du es nicht mit Delphi machen musst, solltest du dir mal die entsprechenden Tools im Browser angucken (insb. Chrome und Firefox). In diesem Artikel von Troy Hunt findest du ein schönes Beispiel, was man damit so machen kann.

Bernhard Geyer 16. Mär 2014 07:23

AW: Geschwindigkeitsmessung eines Seitenaufrufs
 
Und was bringt es diese Zeit zu haben?
Webseiten zu testen ist nicht gerade eine Triviale Angelegenheit und das "nur mal so zu machen" kann sehr leicht in eine größeres Projekt ausarten.
Nicht umsonst gibt es hier (teilweise sehr teure) Spezialanwendungen. Und wie du merkst werden die Oberflächen so stark auf reale Anwender optimiert so das ein "einfacher" Test mit TWebbrowser schon fast zwangsweise scheitern muss.

Ajintaro 16. Mär 2014 08:32

AW: Geschwindigkeitsmessung eines Seitenaufrufs
 
Hi schönen Sonntag euch allen,

ich bin nicht zwingend auf Delphi angewiesen, aber Delphi bietet mir die Möglichkeit gewissen Dinge zu automatisieren. Ich bin z.B. über das Chrome Plugin Speed Tracer gestolpert. Das ist ganz nett, ich kann sogar ein logfile speichern für eine nachfolgende Auswertung. Also benötige ich Delphi nicht zwingend zur reinen Messung, aber zumindest als Automatisierung um eine Messung alle 5 Minuten vorzunehmen.

Bernhard hat völlig recht - gerade diese fiesen Datepicker-Felder können nicht per copy/paste ausgefüllt und ausgewertet werden. Man muss zwingend mit der Maus auf die entsprechende Schaltfläche klicken um ein gütiges Datum zu produzieren. Ich sehe derzeit keine andere Möglichkeit als mit SetCurserPos o.ä. einen Mausklick zu simulieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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