Hier ist, was ich tue:Selenium click() Ereignis scheint nicht immer ausgelöst zu werden => führt zu Timeout?
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
// do something, then navigate to a different page
// (window focus is never changed in-between)
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
Der Link "mylink" existiert, der erste Aufruf von Klick() funktioniert immer. Aber der zweite Klick() scheint manchmal zu funktionieren, manchmal nicht.
Es sieht so aus, als ob das Ereignis click() überhaupt nicht ausgelöst wird, weil die Seite nicht einmal zu laden beginnt. Leider ist dieses Verhalten untermineralistisch.
Hier ist, was ich schon versucht:
Set längere Zeit Timeout
=> nicht vorhanden ist eine SeiteWarten für ein Element half
=> funktioniert nicht nach dem Laden Entweder beginnt die Seite nicht einmal zu laden
Für jetzt I endete das Aufrufen von click() zweimal, also:
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
// do something, then navigate to a different page
// (window focus is never changed in-between)
selenium.click("link=mylink");
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
Das wird funktionieren, aber es ist keine wirklich nette Lösung. Ich habe auch in einem anderen Forum gesehen, wo jemand so etwas wie ein ‚clickAndWaitWithRetry‘ schreiben vorgeschlagen:
try {
super.click("link=mylink");
super.waitForPageToLoad(60000);
}
catch (SeleniumException e) {
super.click("link=mylink");
super.waitForPageToLoad(60000);
}
Aber ich denke, das ist auch keine richtige Lösung .... Irgendwelche Ideen/Erklärungen, warum das Click () Ereignis wird manchmal nicht ausgelöst?
Normalerweise verwende ich 'setspeed' anstelle von timeout, wenn ich aus irgendwelchen Gründen mein Skript verlangsamen möchte. –