Wie man webDriver warten, bis das laden der Seite, (C# - Selen-Projekt)
Habe ich begonnen, ein Selen-Projekt in C#. Versuchen, zu warten, bis Seite geladen ist und erst dann gehen Sie zur nächsten Aktion.
Mein code sieht wie folgt aus:
loginPage.GoToLoginPage();
loginPage.LoginAs(TestCase.Username, TestCase.Password);
loginPage.SelectRole(TestCase.Orgunit);
loginPage.AcceptRole();
innen loginPage.SelectRole(TestCase.Org.):
RoleHierachyLabel = CommonsBasePage.Driver.FindElement(By.XPath("//span[contains(text(), " + role + ")]"));
RoleHierachyLabel.Click();
RoleLoginButton.Click();
Ich Suche für element RoleHierachyLabel. Ich habe versucht, mehrere Möglichkeiten, um zu warten, bis das laden der Seite, oder suchen Sie für ein element-Eigenschaft, so dass für einige timeout:
1. _browserInstance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
2. public static bool WaitUntilElementIsPresent(RemoteWebDriver driver, By by, int timeout = 5)
{
for (var i = 0; i < timeout; i++)
{
if (driver.ElementExists(by)) return true;
}
return false;
}
Wie würden Sie gegen das Hindernis?
InformationsquelleAutor clau84 | 2017-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe die Suche nach alternativen und ich habe entschieden für die folgenden Versionen. Alle verwenden die explizite warten mit einem timeout definiert und basieren auf element-Eigenschaften im ersten Fall und auf element Umstand im zweiten Fall.
Erste Wahl wäre die überprüfung der Eigenschaften des Elements, bis ein timeout erreicht ist. Ich habe angekommen, um die folgenden Eigenschaften, die bestätigen, dass es steht auf der Seite:
Existenz - Eine Erwartung, die für die überprüfung, dass ein element vorhanden ist, auf das DOM einer Seite. Das bedeutet nicht unbedingt, dass das element sichtbar ist.
Sichtbarkeit - Eine Erwartung, die für die überprüfung, dass ein element vorhanden ist, auf das DOM einer Seite und sichtbar. Sichtbarkeit bedeutet, dass das element nicht nur angezeigt, sondern hat auch eine Höhe und Breite, die größer ist als 0.
Anklickbar - Eine Erwartung, die für die überprüfung ein element sichtbar und aktiviert, so dass Sie können auf die Schaltfläche klicken.
Zweite Wahl gilt, wenn der trigger-Objekt, zum Beispiel ein Menüpunkt ist nicht mehr an der DOM -, nachdem es angeklickt wird. Dies ist meistens dann der Fall, wenn auf Aktion klicken Sie auf das element ausgelöst wird, eine Umleitung zu einer anderen Seite. In diesem Fall ist es sinnvoll, überprüfen StalenessOf(element) where-element ist das Element, auf das geklickt wurde, um die trigger-redirect auf die neue Seite.
Danke @Lars! Pop-up-Interaktion behandelt werden könnten, in etwas verschiedener Weise: zunächst dachte wäre mit der WindowHandles finden Sie Ihren pop-up und mit Fahrer.SwitchTo() mit ihm interagieren.
InformationsquelleAutor clau84
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
Finden Sie auch unter diese Antwort
InformationsquelleAutor Josh
Ich in der Regel verwenden Sie eine explizite warten, und warten, bis eines elements sichtbar ist, dann gehen Sie zur nächsten Aktion. Diese sollte wie folgt Aussehen:
Mehr auf Explizite wartet hier: Explizite wartet Selen C# und hier WebDriver Explizite wartet
InformationsquelleAutor razor1509
Ich Tat dies, um diese Art von Problem. Es ist eine Kombination aus Timer und Schleifen, die Suche nach einem bestimmten element, bis es timesout nach einer bestimmten Anzahl von Millisekunden.
Ich auch eine für das element aktiviert
Schaut gut aus! IWebElement gibt ein Objekt zurück, wie Sie gehen durch die Erlangung seinen Weg? Für die Geltendmachung Zwecke-element.getAbsoluteXpath() element.getRelativeXpath() könnte eine gute Menge an Kandidaten.
Ich bin mir nicht sicher, was du meinst, denn wenn Sie telefonieren element.getAbsoluteXpath() Sie bereits das element und es ist nicht null. Das bedeutet, dass Sie bereits packte, IWebElement durch einige Mittel, Id, classname, xpath, etc.
InformationsquelleAutor Ben Williams