Verwenden von Java-Skript-Code in Mathematica
Ich habe die folgende HTML-Datei in "C: \ local.html" gespeichert:
<html>
<head>
<script type="text/javascript">
function execute()
{
const urlParams = new URLSearchParams(window.location.search);
const param = urlParams.get('param');
var text_box = document.getElementById("path_text");
text_box.value = param;
}
</script>
</head>
<body onload="execute()">
<textarea id="path_text" rows="40" cols="80" style="font-size:75%"></textarea><br/>
</body>
</html>
Wenn ich die Datei in meinem Webbrowser wie "file: /// C: /local.html? Param = irgendein interessanter Text" öffne, habe ich eine Webseite mit dem Textbereich erhalten, der den Text "irgendein interessanter Text" enthält, an den übergeben wurde das Java-Skript nach URL-Variable param.
Jetzt möchte ich dieselbe Datei mit demselben URL-Parameter in Mathematica importieren und dann den Inhalt von extrahieren, textarea id="path_text"nachdem das Java-Skript ausgeführt wurde.
Der folgende Code
Import["file:///C:/local.html?param=some dfsf"]
gibt Fehler "Datei wurde nicht gefunden".
Die folgenden zwei Codes geben keinen Fehler aus, geben aber auch keine Daten aus, z. B. wurde der Java-Skript-Code nicht ausgeführt oder / und der URL-Parameter wurde nicht übergeben.
Import["file:///C:/local.html",
Parameters -> {"param" -> "Some interesting text"}]
Import["C:\\local.html",
Parameters -> {"param" -> "Some interesting text"}]
Wie importiere ich eine lokale HTML-Datei mit übergebenen URL-Parametern in ein Java-Skript und ein ausgeführtes Java-Skript?
AKTUALISIEREN:
Mit flinty der Beratung zu verwenden , StartWebSessionund WebExecuteich herausgefunden, wie der Inhalt von Textbereich von Java-Script - Code zu extrahieren:
session = StartWebSession[Visible -> False];
WebExecute[
"OpenPage" -> "file:///C:/local.html?param=Some interesting text"];
WebExecute[session,
"JavascriptExecute" ->
"return document.getElementById('path_text').value"]
DeleteObject[session]
Clear[session]
(*"Some interesting text"*)
Antworten
Ich kann die Seite mit Firefox laden und das Element erhalten. Ich glaube jedoch nicht, dass Wolfram das Extrahieren von Attributen über XPath implementiert hat. Die Verwendung "JavascriptExecute"funktioniert jedoch.
session = StartWebSession[Visible -> False];
WebExecute[session, {
"OpenPage" -> "file:///C:/local.html?param=some%20dfsf"
}]
(* here we try to get the element and it works *)
e = WebExecute[session, {
"LocateElements" -> "XPath" -> "//*[@id='path_text']"
}]
(* here we try to get the .value attribute, but it won't work and returns {{}}.
This XPath query doesn't even work in the Firefox console either. *)
a = WebExecute[session, {
"LocateElements" -> "XPath" -> "//*[@id='path_text']/@value"
}]
(* we can try to execute js on the page to extract the attribute, this works *)
result = WebExecute[session,
"JavascriptExecute" -> "return document.getElementById('path_text').value"]
DeleteObject[session]