@@ -69,15 +69,22 @@ public virtual IList<T> FindElements<T>(By locator, string name = null, ElementS
69
69
default :
70
70
throw new ArgumentOutOfRangeException ( $ "No such expected value: { expectedCount } ") ;
71
71
}
72
-
73
- var webElements = ElementFinder . FindElements ( locator , state , TimeSpan . Zero , name ) ;
74
- IEnumerable < T > elements = webElements . Select ( ( webElement , index ) =>
72
+
73
+ var elements = new List < T > ( ) ;
74
+ ConditionalWait . WaitFor ( ( ) =>
75
75
{
76
- var elementIndex = index + 1 ;
77
- var elementName = $ "{ name ?? "element" } { elementIndex } ";
78
- return elementSupplier ( GenerateLocator ( locator , webElement , elementIndex ) , elementName , state ) ;
79
- } ) ;
80
- return elements . ToList ( ) ;
76
+ var webElements = ElementFinder . FindElements ( locator , state , TimeSpan . Zero , name ) ;
77
+ elements = webElements . Select ( ( webElement , index ) =>
78
+ {
79
+ var elementIndex = index + 1 ;
80
+ var elementName = $ "{ name ?? "element" } { elementIndex } ";
81
+ return elementSupplier ( GenerateLocator ( locator , webElement , elementIndex ) , elementName , state ) ;
82
+ } ) . ToList ( ) ;
83
+ var anyElementsFound = elements . Any ( ) ;
84
+ return expectedCount == ElementsCount . Any || ( expectedCount == ElementsCount . Zero && ! anyElementsFound ) || ( expectedCount == ElementsCount . MoreThenZero && anyElementsFound ) ;
85
+ } , exceptionsToIgnore : new List < Type > { typeof ( StaleElementReferenceException ) , typeof ( JavaScriptException ) , typeof ( WebDriverTimeoutException ) } ) ;
86
+
87
+ return elements ;
81
88
}
82
89
83
90
public virtual T GetCustomElement < T > ( ElementSupplier < T > elementSupplier , By locator , string name , ElementState state = ElementState . Displayed ) where T : IElement
0 commit comments