Naja, das Problem an Callbacks sehe ich darin, das AFAIK keine Returnwerte zurückgegeben werden können. Ich kann mir zwar verschiedene Dinge anzeigen lassen, während `app` läuft, aber die Dinge eben nur abspeichern, wenn ich sie in Attribute der Klasse schreibe. Mir ist klar, dass die Sitzung nach jeden `quit()` beendet ist.
Allerdings hat man ja dann trotzdem den JS-Code, weiß was man öffnen soll und lässt ihn mit JS eben Sachen ausfüllen, abschicken usw. Wobei über "usw" wohl noch zu sprechen wäre. Z.B. weiß ich nicht wie man Links anklickt. Wohlgemerkt: keine neuen URL's öffnet, sondern einen Klick simuliert (das kann ja durchaus unterschiedlich von den Seiten behandelt werden).
Außerdem glaube ich, dass man Frames in ihrem aktuellen Zustand auch wieder einspeisen kann.
Hier mal die beiden Dateien zusammen:
pybrowse.py (`submit()` ist noch ungetestet, sollte aber theoretisch so laufen)
jswrapper.py (an `__setitem___()` tüftel ich noch bzw habe gerade eine Denkblockade)
Also nochmal meine Intention, falls das nicht ganz rübergekommen ist: Ich will, ähnlich wie bei `mechanize` eine Seite öffnen, dann Zugriff auf den aktuellen Code haben, ein Feld ausfüllen, evtl. zwischendurch im Fenster anzeigen lassen ob das richtige ausgefüllt wurde, abschicken, das Ergebnis angucken usw. Dafür ist es m.E. nötig, die Sitzung zu unterbrechen - sprich: aus dem Eventloop zu kommen - dann seine Klamotten zu machen, um danach einigermaßen elegant zur bisherigen Stelle zu kommen, wo man sich dann alles angucken kann. Wenn ein Browser-Skript fertig ist, bietet es sich natürlich an, dieses in einem Stück ausführen zu lassen, also ohne ständige Unterbrechungen. Diese sind halt eher zum Testen im Interpreter gedacht.