WebDriver ausführen von javascript seltsames Verhalten

Ich bin mit Webdriver durch JBehave-Web-distribution (3.3.4) um eine Anwendung zu testen und ich bin vor etwas ganz seltsames:

Ich versuche, die Interaktion mit einem modalPanel von Richfaces, das gab mir eine Menge Probleme, weil es wirft ElementNotVisibleException. Ich löste es durch die Verwendung von javascript:

Dies ist der code in meinem page-Objekt, die sich von org.jbehave.web.Selen.WebDriverPage

protected void changeModalPanelInputText(String elementId, String textToEnter){
    makeNonLazy();
    JavascriptExecutor je = (JavascriptExecutor) webDriver();
    String script ="document.getElementById('" + elementId + "').value = '" + textToEnter + "';";
    je.executeScript(script);
}

Das seltsame Verhalten ist, dass wenn ich den test auszuführen normalerweise macht es nichts, aber wenn ich einen Haltepunkt in der letzten Zeile (in Eclipse), indem Sie die Zeile markieren und ausführen von Eclipse (Strg + U), kann ich die änderungen in der browser.

Überprüfte ich die JavascriptExecutor und die WebDriver-Klassen zu sehen, ob gab es jede Art von Pufferung, aber ich konnte nichts finden. Irgendwelche Ideen?

BEARBEITEN
Ich fand heraus, dass die Inbetriebnahme der thread für 1 Sekunde, es macht es Arbeit, so sieht es eine Art race-condition, aber kann nicht herausfinden, warum...

Dies ist der Weg, es "funktioniert", aber ich bin nicht sehr glücklich darüber:

protected void changeModalPanelInputText(String elementId, String textToEnter){
    String script ="document.getElementById('" + elementId + "').value = '" + textToEnter + "';";
    executeJavascript(script);
}

    private void executeJavascript(String script){
    makeNonLazy();
    JavascriptExecutor je = (JavascriptExecutor) webDriver();
    try {
        Thread.sleep(1500);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    je.executeScript(script);       
}

Setzen das warten in einer anderen position funktioniert auch nicht...

InformationsquelleAutor jasalguero | 2011-07-19
Schreibe einen Kommentar