Ich mache einige Automatisierung mit Rspec und Watir-WebDriver - derzeit Ich habe zwei verschiedene Methoden, die einen gemeinsamen Code-Schnipsel wie dieseWatir #when_present inkonsistent Timeout Ausgabe
# The snippet shown is meant to find a specific div, and when an element within it is present, then perform the click action
search_modal = @browser.div(:class, 'asset-search')
search_modal.when_present do
search_modal.div(:class, 'quick-search').click
end
verwenden ich es für ein Verfahren lief, und es funktionierte einwandfrei ohne Fehler. Ich habe es auf meiner zweiten Methode ausgeführt, und es würde nach 30 Sekunden auslaufen. Schnell vorwärts zu heute Morgen, und diese zweite Methode läuft jetzt richtig durch.
Auch dies ist derselbe Code, der in zwei verschiedenen Methoden verwendet wird. Gibt es ein grundlegendes Problem bei der Verwendung von #wait-Methoden? Wenn diese für brüchig oder knifflig bekannt sind, gibt es eine bessere Möglichkeit, dies zu programmieren?
Sind Sie sicher, dass das Problem mit den Warte-Methoden ist? Wenn die Wartezeit abläuft, sehen Sie das Element, das Sie erwartet haben? Zwei Dinge, die Sie überprüfen möchten, sind (1) dauert es normalerweise 30 Sekunden für das Element zu erscheinen, da dies manchmal über oder unter dem Zeitlimit bedeutet und (2) die Aktion zum Auslösen des 'search_modal' immer funktioniert ? Als Beispiel für Letzteres hatte ich einige Autovervollständigungs-Steuerelemente, bei denen das Setzen des Textfelds inkonsistente Ergebnisse zum Öffnen der Autocomplete-Liste hatte - dh das Problem lag darin, das Modal auszulösen, anstatt auf das Modal zu warten. –
@JustinKo, ich würde sagen, es ist ein bisschen von beidem. Auf dem Bildschirm, wenn ich es sehe, ist es an der richtigen Stelle, aber im Terminal mal nach 30 Sekunden, dass es nicht das richtige Element finden konnte - was verwirrend ist, wenn es dort ankommt! – kmancusi