【问题标题】:Selenium c#: How to launch Internet Explorer driver in a specific version (IE8 for example)Selenium c#:如何在特定版本中启动 Internet Explorer 驱动程序(例如 IE8)
【发布时间】:2013-05-19 02:08:29
【问题描述】:

在 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() 构造函数。

【问题讨论】:

  • 请添加至少一句话听起来像一个问题。
  • 问题在标题中。请仔细阅读。
  • title 应该是对您的问题的描述,并且您问题的 body 应该包含一个问题。就这么简单。

标签: c# internet-explorer selenium driver


【解决方案1】:

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

有一个InternetExplorerOptions 类,它允许您指定用于启动 IE 的额外选项,其中一种方法是 AddAdditionalCapability,它将允许您添加任何您希望 请求。这意味着 options 包含 capabilities,然后将其传递给 driver

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

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

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

编辑

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

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

IE 中的兼容引擎不是,它是该浏览器引擎的真实表示。因此,您必须认为您正在运行具有 IE7 兼容模式的 IE9,因此期望 IE7 完整 - 甚至微软都不会这样说,并且它将用于临时测试 - 不能依赖它.因此,即使您可以这样做,它也不是一个可靠的测试。

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

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

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

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

这里的解决方法是首先强制 IE 在兼容性视图中查看。您的选择非常有限:

Force IE9 into browser compatibility view

【讨论】:

  • 您好阿兰,谢谢您的回答。我看到了选项类并尝试了以下方法: options.AddAdditionalCapability(CapabilityType.Version, "8");这并没有给我想要的结果,即在指定的 IE 版本(例如 IE8)中运行 selenium 测试关于你提到的 IE 的限制。如果您启动 Internet Explorer 并按 F12,您可以选择不同的浏览器模式(IE7、IE8、兼容性视图..)。我希望可以通过设置“浏览器模式”来运行 Internet Explorer 驱动程序。
  • 查看我的编辑,简短的版本仍然是,您无能为力 - 您首先需要强制 IE 以某种模式查看它,Selenium 完全无法控制在它上面 - 再次,不是 Selenium 的限制。我还要再次提及,您将只能使用当时机器上安装的任何 IE。
  • 唯一让我困惑的是,例如在java中,我可以设置什么都不做的版本能力: DesiredCapabilities ieCapabilities = null; ieCapabilities = DesiredCapabilities.internetExplorer(); ieCapabilities.setCapability(CapabilityType.BROWSER_NAME, "Internet Explorer");即Capabilities.setCapability(CapabilityType.VERSION,“8”); driver_ie = new InternetExplorerDriver(ieCapabilities);
【解决方案2】:

要实例化不同的版本,您可以使用capability.setVersion 将版本设置为所需的版本号。同时,在启动节点时,需要在命令行中添加如下参数:

browser "browserName=internet explorer,maxInstances=5,platform=WINDOWS, version=8"

为了在同一个节点支持多个版本,可以多次使用“-browser”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2015-10-30
    • 1970-01-01
    相关资源
    最近更新 更多