2015-04-24 5 views
0

Есть ли способ заставить webdriver/internetexplorerdriver открыть сайт в режиме совместимости. Каждый раз, когда я запускаю свои тесты Nunit, весь список режимов истории и совместимости (где был мой сайт, указанный выше) очищается.selenium - режим совместимости с internetexplorerdriver

Я не могу изменить код сайта. Могу ли я добавить элемент в список режимов совместимости или открыть сайт в специальной версии IE (у меня 11, и мне нужно открыть его в 7 с типом документа 5).

ответ

0

Это лучшее описание моей проблемы: мне нужно проверить сайт, который я не могу редактировать. Сайт работает только в режиме совместимости в моем IE 11 (он создан для 7-го типа типа 5). Я хочу запустить тесты, и файлы cookie должны быть очищены до этого. Но если я установил «EnsureCleanSession = true», он очистит список совместимости в IE, кроме файлов cookie. Из-за этого невозможно проверить сайт.

Я нашел возможное решение, но я должен проверить его ... Я узнал, что список совместимости в реестре, и я могу загрузить его значение, прежде чем она очищается и установите значение снова:

 const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation\ClearableListData";  
     var a = Registry.GetValue(keyName, "UserFilter" , "Return this default if NoSuchName does not exist."); 
     // value of registry is removed 
     Registry.SetValue(keyName, "UserFilter", a); 
     Console.ReadLine(); 

Но, как я уже сказал, я не знаю, если это будет делать трюк ...

[UPDATE]

Хорошо, она работает с небольшой обходным (потому что IE должен быть перезапущен после изменения в реестре)

[SetUp] 
    public void SetUp() 
    { 
     //read the compatibility mode list from registry 
     const string path = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation\ClearableListData"; 
     const string key = "UserFilter"; 
     var regValue = Registry.GetValue(path, key, "Return this default if NoSuchName does not exist."); 

     //run IE driver with cleaning of cookies and history 
     var options = new InternetExplorerOptions 
     { 
      IntroduceInstabilityByIgnoringProtectedModeSettings = true, 
      EnsureCleanSession = true 
     }; 
     _driver = new InternetExplorerDriver(IeDriversPath, options); 

     //cloase IE 
     _driver.Quit(); 
     _driver.Dispose(); 

     //put the compatibility mode list back into registry 
     Registry.SetValue(path, key, regValue); 

     //run IE driver without cleaning of cookies and history 
     options.EnsureCleanSession = false; 
     _driver = new InternetExplorerDriver(IeDriversPath, options); 
    } 
0

К сожалению нет, если вы не измените исходный код. В качестве обходного пути я использую VMS. Если вы хотите использовать тот же маршрут, рассмотрите using free VMs from Microsoft. См. Мой еще один ответ, связанный с вопросом here

+0

У меня красный ваш предыдущий ответ, где вы ссылаетесь на другой ответ: http://stackoverflow.com/questions/5804714/selenium-ie8-force-ie8-compatibility-view. Я хотел заверить себя, что нет никаких вариантов, кроме виртуальных машин. Чтобы быть более конкретным, у меня проблема с «EnsureCleanSession = true», которая очищает список совместимости. Если бы он этого не сделал, все было бы хорошо для меня:/ –

+0

Что вы имеете с собой? Печенье? – Saifur

+0

Я написал это как ответ ниже, потому что он был слишком длинным ... –