Ich versuche, eine Aktion in Selenium durchzuführen, wo es warten würde, bis der Status in bestimmten "Fertig" Status wechselt.Selen bedingte Wartezeit mit Zwischenaktion
Konzeptionell kann es in wie diese Pseudo-Code angelegt werden:
public boolean waitForActionToComplete(long maxTimeoutInSeconds, int repeatTimeInSeconds, Callable<T> action, Callable<T> condition) {
long startTime = 0;
while (startTime < maxTimeoutInSeconds)
perform <action>; // e.g., click on a "Refresh" button to refresh the results
boolean done = verify <condition>; // e.g., check whether the job status is "Done"
if (done)
return true; // if done, then exit with TRUE
else
Thread.sleep(repeatTimeInSeconds);
end while;
return false; // status still not complete, timeout gracefully
}
Diese Methode wahrscheinlich mit ExpectedCondition in etwas leicht umgesetzt werden kann und WebdriverWait/FluentWait. Aufgrund bestimmter Einschränkungen im Framework kann ich die Methode jedoch nicht genau so implementieren und verwenden. Das obige Verfahren müßte umgesetzt werden, da dies (eine Schnittstelle im Rahmen implementiert diese Methode Signatur mit):
public void execute(final WebDriver webDriver, String... parameters) {
// implementation here
}
Kann mir jemand sagen, wie die Methode in der Form oben angegeben zu verwandeln?
Sie untersuchen sollten [WebDriverWait] (https : //seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/WebDriverWait.html) und [FluentWait] (https://seleniumhq.github.io/selenium/docs/ api/java/org/openqa/selen/unterstützung/ui/FluentWait.html). – JeffC
Danke JeffC. Ich schätze es. Es macht Sinn. Ich dachte mir, ich hätte die obige Problembeschreibung nicht. Ich habe es jetzt abgeschlossen. – naspras
Sie können immer noch das tun, was Sie mit einem FluentWait beschrieben haben. Sie müssen es nur selbst implementieren mit den Besonderheiten auf was auch immer verifizieren ist. –
JeffC