|
18 | 18 | // </copyright> |
19 | 19 |
|
20 | 20 | using System; |
21 | | -using System.Collections.Generic; |
22 | 21 | using System.Collections.ObjectModel; |
23 | 22 | using System.Linq; |
24 | 23 |
|
@@ -132,35 +131,13 @@ public string Invoke(Action popupMethod) |
132 | 131 | ReadOnlyCollection<string> existingHandles = this.driver.WindowHandles; |
133 | 132 | popupMethod(); |
134 | 133 | WebDriverWait wait = new WebDriverWait(SystemClock.Instance, this.driver, this.timeout, this.sleepInterval); |
135 | | - string popupHandle = wait.Until<string>((d) => |
| 134 | + string popupHandle = wait.Until(driver => |
136 | 135 | { |
137 | | - string? foundHandle = null; |
138 | | - List<string> differentHandles = GetDifference(existingHandles, this.driver.WindowHandles); |
139 | | - if (differentHandles.Count > 0) |
140 | | - { |
141 | | - foundHandle = differentHandles[0]; |
142 | | - } |
143 | | - |
144 | | - return foundHandle; |
| 136 | + ReadOnlyCollection<string> newHandles = driver.WindowHandles; |
| 137 | + return newHandles.Except(existingHandles, StringComparer.Ordinal).FirstOrDefault(); |
145 | 138 | }); |
146 | 139 |
|
147 | 140 | return popupHandle; |
148 | 141 | } |
149 | | - |
150 | | - private static List<string> GetDifference(ReadOnlyCollection<string> existingHandles, ReadOnlyCollection<string> currentHandles) |
151 | | - { |
152 | | - // We are using LINQ to get the difference between the two lists. |
153 | | - // The non-LINQ version looks like the following: |
154 | | - // List<string> differentHandles = new List<string>(); |
155 | | - // foreach (string handle in currentHandles) |
156 | | - // { |
157 | | - // if (!existingHandles.Contains(handle)) |
158 | | - // { |
159 | | - // currentHandles.Add(handle); |
160 | | - // } |
161 | | - // } |
162 | | - // return differentHandles; |
163 | | - return currentHandles.Except(existingHandles).ToList(); |
164 | | - } |
165 | 142 | } |
166 | 143 | } |
0 commit comments