@@ -160,21 +160,28 @@ public static int getFirefoxVersion(WebDriver driver) {
160
160
* @return The found version, or 0 if no version could be found.
161
161
*/
162
162
public static int getIEVersion (WebDriver driver ) {
163
+ String userAgent = getUserAgent (driver );
163
164
// extract browser string
164
165
Pattern browserPattern = Pattern .compile ("MSIE\\ s+\\ d+\\ ." );
165
- Matcher browserMatcher = browserPattern .matcher (getUserAgent (driver ));
166
- if (!browserMatcher .find ()) {
166
+ Matcher browserMatcher = browserPattern .matcher (userAgent );
167
+ // IE dropped the "MSIE" token from its user agent string starting with IE11.
168
+ Pattern tridentPattern = Pattern .compile ("Trident/\\ d+\\ ." );
169
+ Matcher tridentMatcher = tridentPattern .matcher (userAgent );
170
+
171
+ Matcher versionMatcher ;
172
+ if (browserMatcher .find ()) {
173
+ versionMatcher = Pattern .compile ("(\\ d+)" ).matcher (browserMatcher .group ());
174
+ } else if (tridentMatcher .find ()) {
175
+ versionMatcher = Pattern .compile ("rv:(\\ d+)" ).matcher (userAgent );
176
+ } else {
167
177
return 0 ;
168
178
}
169
- String browserStr = browserMatcher .group ();
170
179
171
180
// extract version string
172
- Pattern versionPattern = Pattern .compile ("\\ d+" );
173
- Matcher versionMatcher = versionPattern .matcher (browserStr );
174
181
if (!versionMatcher .find ()) {
175
182
return 0 ;
176
183
}
177
- return Integer .parseInt (versionMatcher .group ());
184
+ return Integer .parseInt (versionMatcher .group (1 ));
178
185
}
179
186
180
187
0 commit comments