Hallo Luca,
On 29.09.20 13:46, Luca Bertoncello wrote:
Am 29.09.2020 13:38, schrieb Hannes T.:
Hallo Hannes,
sowas lässt sich relativ simpel mit Test-Frameworks machen, die eigentlich zum durchtesten von Web-Frontends benutzt werden. Das ist im wesentlichen genau das was du suchst: Ein automatisiert steuerbarer Browser. Gemacht habe ich sowas ähnliches mal mit Selenium:
Ugh, so ein riesiges Ding soll ich installieren?!? Gibt es keine andere Möglichkeit?
Naja, toll finde ich das auch nicht. Aber ich kenne keinen anderen Ansatz, wie eine Webseite vollständig gerendert und mit JS verwendet werden kann.
Theoretisch kannst du natürlich direkt mit dem Treiber des Browsers reden (s. https://w3c.github.io/webdriver/ ) -- aber Selenium macht unter der Haube auch nix anderes.
Ansonsten müsstest du halt auf das zurückgreifen was Andreas schon vorgeschlagen hat, aber das geht bei dir ja leider nicht. Jehnseits der zwei Wege "kein JS" (wie Andreas meinte) und "mit JS" (das was z.B. Selenium macht) erschließt sich mir auch kein dritter Weg. ("Mit ein bisschen JS"?)
Einfach im normalen Browser das Addon "Selenium IDE" herunterladen. Dann ein neues Projekt anlegen, den Ablauf aufzeichnen (Start Recording) und zum Schluss alles als .side-File abspeichern.
Dann in der Kommandozeile `selenium-side-runner -c 'browserName=chrome goog:chromeOptions.args=[headless]' -w projectfile.side` und ab geht die Post. Hat natürlich ein paar Probleme:
- JS basiert, ist auch nicht programmiert sondern nur eine Liste von
Events
Soll es also bedeuten, dass es nicht die JS der gerade geladenen Seite benutzt wird? Oder verstehe ich falsch?
War etwas unklar ausgedrückt, die Binary selenium-side-runner kommt aus NPM und ist in JS geschrieben.
Von der geladenen Seite wird natürlich das komplette JS ausgeführt, allerdings nicht durch Selenium sondern durch den angesteuerten Browser (hier chromium).
"Nicht Programmiert" sind die Abläufe die Selenium durchgeht, d.h. die .side-Datei die ausgeführt wird. Das ist einfach nur ne JSON-Liste mit Events.
- braucht viele Abhängigkeiten (neben chromium chromium-driver und den
selenium-side-runner, der nicht mal in den repos ist)
- genauso Ressourcenhungrig wie chromium
Grüße Luca
An der Stelle will ich noch anmerken dass mir dieser JS-für-alles-Hype gehörig gegen den Strich geht. Selenium benutze ich nicht, weil ich das so toll finde, sondern weil es sehr effizient der nervigen Teil wegkapselt. Da nehme ich auch in kauf, dass das eben auf einem Raspi nicht effizient läuft.
Grüße Hannes