Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   ChromeFrame ansprechen und automatisieren (https://www.delphipraxis.net/168324-chromeframe-ansprechen-und-automatisieren.html)

erich.wanker 15. Mai 2012 13:28

ChromeFrame ansprechen und automatisieren
 
Hallo Leute,

hab Delphi7 auf einem WinXp Rechner
Dann im XP "Google Chrome Frame" installiert https://developers.google.com/chrome/chrome-frame/
Dann von Progdigy den sourcecode für ChromeFrame installiert http://www.progdigy.com/files/chrometab.zip
und anschließend einen kleinen Test gestartet...

In meiner Delphi Anwendung hab ich nun einen ChromeFrame ..
Aber es funktioniert kein Hyperlink im Frame und keine Weiterleitungen (nicht mal http://www.google.de) - auch finde ich keine Events (Document geladen ect..)

Was will ich?: Gehen tuts hauptsächlich um Gastronomieseiten wie booking.com, hotel.de, feratel.at -
Eine Sekretärin klickt auf einen Button und die verschiedenen Schritte werden bis zu einem bestimmten Grad automatisch (mit teilweise Werten aus Datenbank) durchgeführt (Eingabe Benutzername, Kennwort, klick auf Menüpunkte ect..)

??? Hat jemand einen Vorschlag, wie ich folgendes Beispiel via Delphi & Chrome lösen könnte:
- Seite Aufrufen: https://www.hotel.de/Customer/Profile?lng=DE
- finde Input-Field "EmailOrUserName" und schreib Wert rein
- finde Input-Field "UserPass" und schreibe Wert rein
- finde Button id="LoginFormButton" und simuliere Click
- Wenn neue Seite fertig geladen ist - mache ... u.s.w.






Vielen Dank
Erich







P.s:
Den TWEbBrowser von Delphi7 möchte ich nicht mehr verwenden - der ist schon zu alt...
Im TWebbrowser hab ich bis dato Seiten aufgerufen, diverse Felder ausgefüllt und klicks simuliert


TWebbrowser Klick simulieren
Delphi-Quellcode:
function WB_ClickLink(WB: TWebbrowser; const LinkText: string): Boolean;
var
  HTMLDocument2: IHTMLDocument2;
  Element: IHTMLElement;
  I: Integer;
begin
  HTMLDocument2 := WB.Document as IHTMLDocument2;
  for I := 0 to HTMLDocument2.Links.Length - 1 do
  begin
    Element := HTMLDocument2.Links.Item(I, 0) as IHTMLElement;
    if Element.GetAttribute('innerText', 0) = LinkText then
    begin
      Element.Click;
      Break;
    end;
  end;
end;
TWebbrowser Texteingabe
Delphi-Quellcode:
  Clipboard.SetTextBuf(PChar(edit1.text));  // in die Zwischenablage
  Sleep(100);
  Webbrowser1.OleObject.Document.All.Item('file1').Focus;    // das Uploadfeld 1 finden
  Sleep(100);
  Webbrowser1.ExecWB(OLECMDID_PASTE, 0);
Hat eigentlich wunderbar funktioniert...




und hier die simple Chrome-Unit, mit der ich bis dato nicht mal eine funktionstüchtige Seite reinladen kann :-(
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ChromeTabLib, StdCtrls, Buttons, ToolWin, ComCtrls, ExtCtrls,
  ActnList, Menus;

type
  TForm1 = class(TForm)
    ChromeFrame1: TChromeFrame;
    Panel1: TPanel;
    SpeedButton6: TSpeedButton;
    Edit1: TEdit;
    procedure ChromeFrame1Message(ASender: TObject; const event: OleVariant);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure SpeedButton6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


// Name: ChromeFrame1
// Properties: Privileged = true;


procedure TForm1.ChromeFrame1Message(ASender: TObject;
  const event: OleVariant);
begin
MessageDlg(event.data, mtInformation, [mbOK], 0);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    ChromeFrame1.Navigate(Edit1.Text);
    Abort;
  end;
end;

procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
  ChromeFrame1.Navigate('http://www.google.com');
end;

end.

Andreas L. 15. Mai 2012 13:46

AW: ChromeFrame ansprechen und automatisieren
 
Zitat:

Den TWEbBrowser von Delphi7 möchte ich nicht mehr verwenden - der ist schon zu alt...
TWebBrowser verwendet den aktuell installierten Internet Explorer. Die Komponente ist also so alt wie der installierte Browser :wink:

Es gibt auch noch eine verbesserte TWebBrowser-Variante: TEmbeddedWB

Zu dem Chrome-Control kann ich nichts sagen.

jaenicke 15. Mai 2012 15:07

AW: ChromeFrame ansprechen und automatisieren
 
Ich würde dir dringend raten die Finger von Chrome Frame zu lassen und besser direkt Chromium zu integrieren...
http://code.google.com/p/delphichromiumembedded/
Das ist einfacher und man muss auf dem System nix installieren.

Bernhard Geyer 15. Mai 2012 15:27

AW: ChromeFrame ansprechen und automatisieren
 
Das Chrome-Frame ist ja wohl für etwas anderes gedacht als darüber das ActiveX-Interfacemodell des IE bereit zu stellen

r_amse_s 31. Jul 2012 15:04

AW: ChromeFrame ansprechen und automatisieren
 
wie könnte ich Felder in einer extra laufende Chrome Session einfügen?
-zuerst wahrscheinlich den Handle des Fensters herausfinden
- dann?

Morphie 31. Jul 2012 15:10

AW: ChromeFrame ansprechen und automatisieren
 
warum willst du denn unbedingt einen 2. Browser einbinden wenn es den IE auf jedem Windows Rechner vorinstalliert gibt?!

Was genau gefällt dir denn an TWebBrowser nicht?

r_amse_s 31. Jul 2012 15:21

AW: ChromeFrame ansprechen und automatisieren
 
auf dem (internen) System wo die Seite abgerufen wird kann nur XP laufen, somit max IE8.
die Seite hat spezielle Inhalte, Java Scripts, riesige Tabellen, womit IE8 leider nicht zurecht kommt.
im Chrome funkt alles prima...das ist mein Problem

jaenicke 31. Jul 2012 15:50

AW: ChromeFrame ansprechen und automatisieren
 
Und was stört dich daran Chromium direkt zu integrieren? Das funktioniert bei uns problemlos und vor allem eben ohne Änderungen am System usw.

Da mit laufenden Chrome-Instanzen herumzuhantieren ist doch...


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