Inwiefern weicht das Ergebnis denn ab?
Es kann natürlich sein, dass das
HTML im Browser noch durch Javascript abgeändert wird. Du fragst ja mit document.documentElement.outerHTML nicht den eigentlichen
HTML-Quellcode an, der geladen wurde, sondern den aktuellen Stand zum Zeitpunkt der Ausführung. Wenn jetzt Javascript selbst auf das "onload" wartet und Daten nachlädt, sieht das Ergebnis einige Zeit später anders aus.
Du kannst allerdings in Javascript selbst auf ein anderes Event warten, z.B. so:
EdgeBrowser1.executescript('document.addEventListener("DOMContentLoaded", (event) => { chrome.webview.postMessage(document.documentElement.outerHTML);});');
Das Ergebnis bekommst Du dann über
Delphi-Quellcode:
procedure TForm2.EdgeBrowser1WebMessageReceived(Sender: TCustomEdgeBrowser;
Args: TWebMessageReceivedEventArgs);
var
WebMessage: PWidechar;
begin
args.ArgsInterface.TryGetWebMessageAsString(PWidechar(WebMessage));
showmessage(Webmessage);
end;
Man kann sich über "DOMContentLoaded" auch direkt in Delphi informieren lassen ohne den Umweg über PostMessage, aber so wie im Beispiel bist Du flexibel, verschiedene Zeitpunkte in Javascript auszuprobieren.
Letztlich könntest Du Dir so auch sparen, den
HTML-Code im Nachhinein nochmal mit Python zu parsen. Du kannst die gesuchten Werte direkt per Javascript im Browser auslesen und an Delphi wie oben gezeigt übermitteln, auch im JSON-Format (über args.ArgsInterface.Get_webMessageAsJson).