selenium - режим совместимости с InternetExplorerDriver

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

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


person Marek Manduch    schedule 24.04.2015    source источник


Ответы (2)


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

person Saifur    schedule 24.04.2015
comment
Я выделил ваш предыдущий ответ, где вы ссылаетесь на другой ответ: stackoverflow.com/questions/5804714/ . Я хотел уверить себя, что кроме ВМ другого выхода нет. Чтобы быть более конкретным, у меня есть проблема с SureCleanSession = true, которая очищает мой список совместимости. Если бы он этого не сделал, у меня все было бы хорошо :/ - person Marek Manduch; 24.04.2015
comment
С чем у вас проблема? Печенье? - person Saifur; 24.04.2015

Это лучшее описание моей проблемы: мне нужно протестировать сайт, который я не могу редактировать. Сайт работает только в режиме совместимости в моем IE 11 (сделан для ie 7 doc type 5). Я хочу запустить тесты, и куки должны быть очищены перед этим. Но если я установлю «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();

Но, как я уже сказал, я не знаю, поможет ли это...

[ОБНОВЛЕНИЕ]

Хорошо, это работает с небольшим обходным путем (потому что 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);
    }
person Marek Manduch    schedule 25.04.2015