Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selenium + IE8: force IE8 compatibility view

I'm running Selenium in singleWindow mode and IE8.

If i start IE8 manually the IE8 mode is set, but when i launch it with Selenium, the mode set is IE7 using the compatibility mode.

Anyone knows why the compatibility mode is not the IE8 view when launching the browser with Selenium?

Or, how can i disable totally the compatibility mode in IE and force it to use always the IE8 view?

like image 460
victorgp Avatar asked Apr 27 '11 13:04

victorgp


People also ask

How do I check Compatibility View in IE?

Open Internet Explorer for the desktop, click Tools, and then click Compatibility View settings. In the Compatibility View Settings box, add the problematic website URL, and then click Add. Compatibility View is turned on for this single website, for this specific computer.

How do I add a URL to Compatibility View in IE?

To add a site to the Compatibility View list from your Internet Explorer homepage: 1. Tap or click the Tools button, and then tap or click Compatibility View settings. 2. Under Add this website, enter the URL of the site you want to add to the list, and then tap or click Add.

How does IE compatibility mode work?

Compatibility mode in IE is a feature that helps you view webpages that were designed for previous versions of the browser, however having it enabled can break newer sites that were designed for modern browsers.


1 Answers

I've given the question a +1 because it's a very good question -- it's not obvious how to do this, and if you need to test both modes, then it is a necessary thing to do.

You could get the site to serve <meta http-equiv="X-UA-Compatible" content="IE=7" /> within the page when running the tests. This should force the output mode.

Obviously, that's not ideal, because it means changing your code to produce the meta tag on demand. I'd normally consider it a bad thing if you're having to change the main codebase in to add code for the specific use of your test suite, but in this case I can't see any other solution.

Given that we've decided to go down this path, you could write your code to accept a specified argument in the URL that triggers the meta tag to be served. The IE7 tests could then be written to send that URL argument.

By the way, it's worth pointing out that IE8's IE7-compatibility mode is not 100% identical to IE7; it has its own quirks and bugs which are distinct from those of a real IE7 browser. For the most part it should be fine, but it's worth being aware of this if you're expecting your tests to confirm that the site works in IE7. See this blog post for more info

like image 145
Spudley Avatar answered Sep 21 '22 16:09

Spudley