Selenium und asynchrone JavaScript-Aufrufe

Ich bin ziemlich neu in den Selen- und JavaScript-Callback-Funktionen und habe ein großes Problem, das ich selbst nicht lösen kann. Ich benötige eine angegebene Variable mit JavaScript. Wenn ich die Seite mit GoogleChrome öffne und über die Konsole meinen JavaScript-Code eingebe, kann ich die Variable folgendermaßen abrufen:

1. var myId;
2. getSomeIdStuffInfo("somestuff",function(docId)(myId = docId));
3. return myId;

Wenn ich diese Zeilen schrittweise eingebe, erhalte ich leicht den korrekten Wert myId. Aber natürlich, wenn ich die drei Zeilen so schnell wie möglich ausführe, bekomme ich null als Rückgabewert, weil die Rückruffunktion nicht beendet ist, wenn ich myId zurückgebe. SOOOO .. wenn ich so Selen benutze:

JavascriptExecutor js = (JavascriptExecutor) driver; 
    String docInfoVal = (String) js.executeScript("" +
            "var myId; " +
            "getCurrentDocumentInfo(\"somestuff\"," +
                "function(docId) {" +
                    "myId = docId;" +
                "}" +
            ");" +
            "return myId;");

Ich erhalte nur null als Ergebnis. Also ... irgendwie muss ich auf die Rückruffunktion "warten", bis ich myId zurückgebe. Muss ich executeAsyncScript verwenden und wie? Ich sitze stundenlang darauf und habe verschiedene Dinge ausprobiert, aber ich kann einfach keine Antwort finden.

Vielen Dank im Voraus für jede Hilfe!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage