@@ -65,31 +65,31 @@ public ReadOnlyCollection<IWebElement> FindElements(By locator, Func<IWebElement
65
65
}
66
66
67
67
internal ReadOnlyCollection < IWebElement > FindElements ( By locator , DesiredState desiredState , TimeSpan ? timeout = null )
68
- {
68
+ {
69
+ var foundElements = new List < IWebElement > ( ) ;
69
70
var resultElements = new List < IWebElement > ( ) ;
70
71
try
71
72
{
72
73
ConditionalWait . WaitFor ( driver =>
73
74
{
74
- var elements = driver . FindElements ( locator ) ;
75
- resultElements . Clear ( ) ;
76
- resultElements . AddRange ( elements ) ;
77
- return elements . Any ( desiredState . ElementStateCondition ) ;
75
+ foundElements = driver . FindElements ( locator ) . ToList ( ) ;
76
+ resultElements = foundElements . Where ( desiredState . ElementStateCondition ) . ToList ( ) ;
77
+ return resultElements . Any ( ) ;
78
78
} , timeout ) ;
79
79
}
80
80
catch ( WebDriverTimeoutException ex )
81
81
{
82
- HandleTimeoutException ( ex , desiredState , locator , resultElements ) ;
82
+ HandleTimeoutException ( ex , desiredState , locator , foundElements ) ;
83
83
}
84
- return resultElements . Where ( desiredState . ElementStateCondition ) . ToList ( ) . AsReadOnly ( ) ;
84
+ return resultElements . AsReadOnly ( ) ;
85
85
}
86
86
87
- private void HandleTimeoutException ( WebDriverTimeoutException ex , DesiredState desiredState , By locator , List < IWebElement > resultElements )
87
+ private void HandleTimeoutException ( WebDriverTimeoutException ex , DesiredState desiredState , By locator , List < IWebElement > foundElements )
88
88
{
89
89
var message = LocalizationManager . Instance . GetLocalizedMessage ( "loc.no.elements.found.in.state" , locator . ToString ( ) , desiredState . StateName ) ;
90
90
if ( desiredState . IsCatchingTimeoutException )
91
91
{
92
- if ( ! resultElements . Any ( ) )
92
+ if ( ! foundElements . Any ( ) )
93
93
{
94
94
if ( desiredState . IsThrowingNoSuchElementException )
95
95
{
@@ -105,7 +105,7 @@ private void HandleTimeoutException(WebDriverTimeoutException ex, DesiredState d
105
105
else
106
106
{
107
107
var combinedMessage = $ "{ ex . Message } : { message } ";
108
- if ( desiredState . IsThrowingNoSuchElementException && ! resultElements . Any ( ) )
108
+ if ( desiredState . IsThrowingNoSuchElementException && ! foundElements . Any ( ) )
109
109
{
110
110
throw new NoSuchElementException ( combinedMessage ) ;
111
111
}
0 commit comments