@@ -160,21 +160,28 @@ public static int getFirefoxVersion(WebDriver driver) {
160160 * @return The found version, or 0 if no version could be found.
161161 */
162162 public static int getIEVersion (WebDriver driver ) {
163+ String userAgent = getUserAgent (driver );
163164 // extract browser string
164165 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 {
167177 return 0 ;
168178 }
169- String browserStr = browserMatcher .group ();
170179
171180 // extract version string
172- Pattern versionPattern = Pattern .compile ("\\ d+" );
173- Matcher versionMatcher = versionPattern .matcher (browserStr );
174181 if (!versionMatcher .find ()) {
175182 return 0 ;
176183 }
177- return Integer .parseInt (versionMatcher .group ());
184+ return Integer .parseInt (versionMatcher .group (1 ));
178185 }
179186
180187
0 commit comments