c# - Selenium c# : How to launch Internet Explorer driver in a specific version (IE8 for example)

标签 c# internet-explorer selenium driver

在 java 中,可以通过传递 Desired Capabilities 为 Internet Explorer 驱动程序设置 IE 版本。这在 C# 中不起作用。

我希望它看起来像:

DesiredCapabilities ieCapabilities = null;
ieCapabilities = DesiredCapabilities.InternetExplorer();
ieCapabilities.SetCapability(CapabilityType.Version, "8");

IWebDriver driver = new InternetExplorerDriver(ieCapabilities);

在 c# 中,我无法将 DesiredCapabilities 传递给 InternetExplorerDriver() 构造函数。

最佳答案

DesiredCapabilities 被包装到特定驱动程序的各种 Options 类中。

有一个 InternetExplorerOptions 类,它允许您指定启动 IE 的额外选项,其中一种方法是 AddAdditionalCapability,它允许您添加您希望请求的任何能力。这意味着选项包含功能,然后传递给驱动程序

至于您的具体问题,不,这是不可能的。这也不是 Selenium 或 IEDriverServer 的限制,而是 IE 本身的限制。如果没有主要 技巧,您不可能同时在一台机器上安装多个版本的 IE。换个角度思考 - 每当您升级 IE 时,它都会卸载以前的版本。

它将启动您当前安装的 IE。其他任何事情都是纯粹错误的,而且,这也是错误的,因为您不能同时在一台 Windows 机器上安装多个版本的 IE。

解决这个问题的唯一方法是为每个版本配备单独的机器或虚拟机,或者投资于自动化云测试框架,如 SauceLabs。

编辑

您还提到您希望使用 IE8 的兼容模式,或者想知道在使用 IEDriver 时是否可行。

这又是完全不同的(双关语)。

IE 中的兼容性引擎不是,它是该浏览器引擎的真实代表。因此,你必须认为你正在运行,比如说,IE9 与 IE7 兼容模式,因此期望 IE7 完整 - 它不会,即使微软这么说,它也将用于临时测试 - 它不能被依赖.因此,即使您可以这样做,它也不是最可靠的测试。

问题仍然不是 Selenium 的问题。 IEDriver 将调用安装的任何 IE,此时由 IE 设置 Selenium 可以连接的 session 。

值得一提的是,所有您可以与 IEDriver 一起使用的兼容性选项不会影响 IE 本身,更多的是 session 的创建以及 Selenium 与其交互的方式。

此时,Selenium 举起双手,无能为力。

考虑到这一点,Selenium 根本无法强制 IE 使用特定的浏览器模式。根本没有 API 可以做到这一点,因此做起来并不容易。

此处的解决方法是首先强制 IE 在兼容性 View 中查看。您的选择非常有限:

Force IE9 into browser compatibility view

关于c# - Selenium c# : How to launch Internet Explorer driver in a specific version (IE8 for example),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16718608/

相关文章:

html - IE css 按钮外边框

html - IE 和 firefox 保持一个 div 到页面底部的区别

python - 使用 Selenium Python 填充验证码

python-3.x - 如何等待使用 Selenium 和 Python 定义 src 属性

c# - 如何从缓存中清除过期的项目?

c# - 无法加载文件或程序集 Microsoft.Win32.Primitives,版本 = 4.0.0.0

html - IE添加阴影到下拉菜单子(monad)项

Python Selenium send_keys 函数发送部分文本

c# - 通过Nest在Elasticsearch中使用同义词

c# - 覆盖自动属性