Einzelnen Beitrag anzeigen

Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#1

ChromeFrame ansprechen und automatisieren

  Alt 15. Mai 2012, 13:28
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.
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat