Ich versuche einen einfachen Test zu schreiben. Mein Problem ist, dass ich warten möchte, bis die Seite komplett geladen ist. Im Moment warte ich, bis einige Elemente präsentiert werden, aber das ist nicht wirklich was ich will. Ist es möglich, so etwas zu machen:
%Vor%Mit Java ist das kein Problem, aber wie macht man es mit Ruby?
So schlägt Selenium docs () vor :
%Vor%Wenn das keine Option ist, können Sie den Vorschlag von diese SO-Post , obwohl es etwas Javascript oben auf Ruby / Rails erfordern würde.
Es scheint, dass wait.until
ausläuft / wurde. Der neue vorgeschlagene Prozess es nach der Seite zu suchen, um ein Element zu haben, das du kennst, wird dort sein:
Soweit ich Webtreiber verstehe, müssen Sie nicht auf das Laden der Seite warten, da WebDriver über blockierende API , aber Sie können sicher ein Seitenladezeitlimit setzen.
%Vor%Das wird mit WebDriver nicht mehr benötigt.
WebElement click () und Aktionen klicken Sie () beide "auf Seite laden" bei Bedarf automatisch.
Sie können stattdessen implizit und explizit (in dieser Reihenfolge) warten (beschrieben unter selenehq), wenn Sie zum Beispiel auf einen Ajax-Inhalt warten müssen.
Es gab Fälle, in denen entweder AJAX- oder CSS-Änderungen dazu führten, dass meine Tests zeitweise fehlschlugen. Ich habe diese Methoden meiner statischen Treiberinstanz hinzugefügt, damit der Test bei Bedarf auf bestimmte Bedingungen warten kann. (c #)
TimedWait in der WaitForCssChange-Methode ist im Grunde nur ein Threading.Thread.Sleep
Das ist nicht die schönste Art, die ich schätze, aber es funktioniert gut für meine Bedürfnisse.
Für Ajax warte:
%Vor%Für CSS-Änderungen:
%Vor%