selenium - internetexplorerdriver兼容模式

时间:2015-04-24 09:43:35

标签: c# selenium webdriver nunit compatibility-mode

有没有办法强制webdriver / internetexplorerdriver以兼容模式打开网站。每当我通过Nunit运行我的测试时,所有历史和兼容模式列表(之前列出的我的站点)都会被清除。

我无法更改网站的代码。我可以在兼容模式列表中添加项目或在IE的特定版本中打开网站(我有11个,我需要在7中用文档类型5打开它。)

2 个答案:

答案 0 :(得分:0)

不幸的是,除非您更改源代码。作为一种解决方法,我使用VMS。如果您想使用相同的路线,请考虑using free VMs from Microsoft。请参阅我与问题here

相关的另一个答案

答案 1 :(得分:0)

这是对我的问题的更好描述:我需要测试一个我无法编辑的网站。该网站仅在我的IE 11中以兼容模式工作(它是为ie 7 doc type 5制作的)。我想运行测试,之前应该清理cookie。但如果我设置" EnsureCleanSession = true"除了cookie之外,它还清除IE中的兼容性列表。因此,它无法测试网站。

我找到了可能的解决方案,但我必须测试它...我发现兼容性列表在注册表中,我可以在清理它之前加载它的值并再次设置值:

        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);
    }