2009-04-03 6 views
4

manchmal meine Selen-Tests erhalten Timeouts diese Vorschläge: How do you get selenium to recognize that a page loaded? hat mein Problem nicht behoben. Es passiert meistens zu Beginn des Tests, wenn ich open oder openAndWait verwende. Die seltsame Sache ist, dass die Seite tatsächlich geöffnet wird, aber der Test stoppt einfach und führt keinen Fruther aus. Ich benutze die Beta-2-Version und Multiwindow True. Ich rufe meinen Browser mit dem benutzerdefinierten Befehl auf. Ich bin offen für irgendwelche Vorschläge.Selen öffnen Befehl manchmal nicht funktionieren

thx

kuku

+0

Auch : http://stackoverflow.com/questions/3134474/selenium-firefox-open-timeout – Blundell

Antwort

1

Haben Sie versucht, eine feste Pause (mehrere Sekunden) nach openAndWait setzen? Aus meiner Erfahrung alle "öffnet" und "klickt" in Selen (sogar AndWait *) garantiert Ihnen nicht, dass die Seite vollständig in den Browser geladen wird, bevor der nächste Selen-Befehl verarbeitet wird. Deshalb füge ich nach solchen Befehlen immer eine kleine Pause hinzu.

Auch wenn Sie sehen, dass die Seite im Browser gerendert wird, bedeutet dies nicht unbedingt, dass dem Befehlsprozessor des Selenium zu diesem Zeitpunkt alles zur Verfügung steht. Diese

+0

Ich habe eine Pause hinzugefügt, aber immer noch manchmal fehlgeschlagen. Ich hatte deleteAllCookies als erster Befehl und nach dem Öffnen, und es blieb offen, was ich als nächstes versuchte, war Entfernen der deleteAllCookies Befehl + halten Sie Ihren Vorschlag scheint meine Tests stabiler gemacht Dank. – kukudas

+0

Sie können auch versuchen, die Selenium-Geschwindigkeit einzustellen, um Selen als Ganzes zu verlangsamen. Experimentieren Sie damit, bis Ihre Tests stabil sind. –

+0

Ja, ich habe es auch versucht, es ist wirklich frustrierend, manchmal funktioniert es 6-7 mal und dann scheitert es :(aber der pause Befehl ließ es öfter stabil laufen. – kukudas

1

funktioniert für mich in IE6, IE7, IE8, FF, Chrome:

<tr> 
    <td>waitForCondition</td> 
    <td> 
    (selenium.browserbot.getCurrentWindow().$$("body").length == 1) ? true : false; 
    </td> 
    <td>10000</td> 
</tr> 

Es ist einfach fragt das Zielfenster und überprüft das Körperelement. Es ist jedoch immer noch anfällig für eine Zeitüberschreitung, aber Sie können das einstellen, was Sie wollen.

Hinweis: Der obige Code verwendet Prototyp JS, um das body-Element zu erhalten. Dies ist nicht erforderlich, erfordert jedoch einige Änderungen, wenn Sie eine andere JS-Bibliothek verwenden.

1

Ich hatte ein ähnliches Problem, mein wird nur Timeout egal was.
Ich sehe die Seite wird komplett gerendert, aber aus irgendeinem Grund selenium.open(relative_url) wird nur Timeout.

Ich habe versucht, Timeout auf 120 Sekunden und immer noch das gleiche Problem. Es war auch nicht hilfreich, die Geschwindigkeit auf sehr langsam zu setzen.

Ich reparierte es durch die Ausnahme mit einem try/catch Handhabung und grundsätzlich mit Validierung gehen, wenn die Seite wirklich gemacht oder nicht (wirkt wie ein Zauber) so mein Code sieht wie folgt aus:

try { 
    selenium.open(relative_url); 
} catch (Exception e) { 
    // check if page rendered completely here 
} 
// continue 
Verwandte Themen