2

I IReadOnlyCollection <IWebElement> mit WebDriverWait, um sicherzustellen, finden müssen, dass Elemente auf Seite gerendert worden war.wait.Until (ExpectedConditions.VisibilityOfAllElementsLocatedBy (By.ClassName (classname)) return kein Element

Dies ist mein Code

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeout)); 
return wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("TextInput"))); 

Dieser Code Fehler bei Timeout. Bedeutung, die keine Elemente auf Seite mit bestimmten Klassennamen finden konnte. Ich habe diese Codezeile VOR nur mein Original-Code, um sicherzustellen, dass Elemente

var allInputs1 = container.FindElements(By.ClassName("textInput")); 

vorhanden sind, und diese Linie gibt Elemente wie erwartet.

Also meine conclustion ist, dass wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("TextInput"))) nicht da, dass wie erwartet funktioniert nicht Elemente gefunden, die sicher vorhanden auf Seite sind.

Was ist der beste Weg, Array von Elementen zu finden mit WebDriverWait?

+0

Das Timeout bedeutet, dass einige der Elemente, die die Klasse passenden noch versteckt sind. Versuchen Sie es mit einem selektiven Selektor. –

Antwort

4

Ihre Schlussfolgerung ist falsch. Mit FindElements stellen Sie nur sicher, dass Elemente vorhanden sind.

Die API-Dokumentation für VisibilityOfAllElementsLocatedBy Zustände:

Eine Erwartung für die Überprüfung, dass alle Elemente, die auf der Web-Seite , die den Locator sichtbar sind übereinstimmen. Sichtbarkeit bedeutet, dass die Elemente nicht nur angezeigt, sondern auch eine Höhe und Breite aufweisen, die größer ist als 0.

ist und offensichtlich vorhanden ist nicht sichtbar.

Ich glaube, Sie sollten versuchen, ExpectedConditions.PresenceOfAllElementsLocatedBy

+0

Vielen Dank für Ihre Antwort, aber ich sehe die Elemente auf der Seite und ich habe bereits die PresenceOfAllElementsLocatedBy versucht. FindElements würde 2 Ergebnisse zurückgeben und PresenceOfAllElementsLocatedBy würde 6 Ergebnisse zurückgeben - 4 davon sind tatsächlich nicht sichtbar - daher der Fehler in VisibilityOfAllElementsLocatedBy. Wo ändert sich mein Umfang? –

+1

@Polina F. Nein, eigentlich 'findElements' würde nicht auf Element durch bereitgestellten Locator warten, so dass es zu der Zeit nur zwei gefunden hat, während' PresenceOfAllElementsLocatedBy' warten würde, bis der angegebene Locator mit den Elementen übereinstimmt, deshalb sehen Sie den Unterschied und VisibilityOfAllElementsLocatedBy tue nur für Präsenz und Sichtbarkeit für alle 6 Elemente, weshalb du eine Ausnahme bekommst, also funktionieren grundsätzlich alle Methoden perfekt, du änderst nur deine Gedanken. Vielen Dank..:) –

Verwandte Themen