繁体   English   中英

Selenium c#:如何在特定版本中启动Internet Explorer驱动程序(例如IE8)

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

在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。

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

编辑

您还提到过您希望使用IE8的兼容模式,或者想知道在使用IED驱动程序时是否可行。

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

IE中的兼容性引擎不是该浏览器引擎的真实表示。 因此,你必须认为你正在运行,比如IE9与IE7兼容模式,因此期望IE7完全 - 它不会,甚至微软说这个,它将被用于adhoc测试 - 它不是依赖于。 因此,即使你做到这一点,即使是最轻微的条款,它也不是一个可靠的测试。

问题仍然不是Selenium问题。 IED驱动程序将调用IE安装的任何内容,此时,它将由IE设置为Selenium可以连接的会话。

值得一提的是,您可以与IED驱动程序一起使用的所有兼容性选项不会影响IE本身,更多的是会话的创建以及Selenium如何与之交互。

在这一点上,Selenium把手举到空中,它几乎无法做到。

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

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

强制IE9进入浏览器兼容性视图

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM