Ich weiß, dass, nach einigen Meinungen, im perfekten Fall sollte ich nicht implizite Wartezeit verwenden. Aber ich habe eine langsame Benutzeroberfläche; Es wäre ein ziemlich großes Unterfangen, allen Orten, an denen Rendering stattfinden kann, explizite Wartezeiten hinzuzufügen. Eine standardmäßige implizite Wartezeit von 20 Sekunden, die bei der Treiberinitialisierungszeit festgelegt wird, deckt 80% des Wartens perfekt ab.Ändern Selen implizit warten innerhalb Testprozess
Aber dann muss ich die restlichen 20% behandeln. Manchmal muss ich warten, bis ein Element verschwindet - und die implizite Wartezeit bedeutet in diesem Fall zusätzliche 20 Sekunden. Und manchmal muss ich nach dem Vorhandensein eines Elements suchen, aber nicht auf alle 20 Sekunden warten (weil das Element im normalen Ausführungsfluss oft nicht vorhanden ist).
Also, ich möchte natürlich vorübergehend die implizite Wartezeit deaktivieren:
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
new WebDriverWait(driver, MY_TIMEOUT)).until(ExpectedConditions.WHATEVER_I_NEED);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
Aber wird diese stabil sein? Oder ändert sich das implizite Warten (in diesem Fall von 20 auf Null und zurück auf 20) irgendwie gefährlich?
Perfekt gültig für diese. Noch wichtiger ist die korrekte Art, implizite und explizite Wartezeiten zu vermischen. Diese Mischung von Wartezeiten führt zu einigen schwer zu debuggenden Problemen mit langen Wartezeiten. Problem ist, dass Sie vergessen könnten, das implizite Warten ein- und auszuschalten. Es empfiehlt sich, eine Dienstprogrammfunktion zu schreiben, um diese Logik zu umbrechen, indem Sie das Kriterium für das explizite Warten übergeben und es in Ihrer Codebasis verwenden. – Grasshopper
@Grasshopper könnten Sie dies zu einer Antwort machen? –