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

Selenium c#:如何在特定版本中启动Internet Explorer驱动程序(例如IE8),c#,internet-explorer,selenium,driver,C#,Internet Explorer,Selenium,Driver,在java中,通过传递所需的功能,可以为internet explorer驱动程序设置IE版本。这在C#中不起作用 我希望它看起来像: DesiredCapabilities ieCapabilities = null; ieCapabilities = DesiredCapabilities.InternetExplorer(); ieCapabilities.SetCapability(CapabilityType.Version, "8"); IWebDriver driver = ne

在java中,通过传递所需的功能,可以为internet explorer驱动程序设置IE版本。这在C#中不起作用

我希望它看起来像:

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

IWebDriver driver = new InternetExplorerDriver(ieCapabilities);

在c#中,我无法将所需的功能传递给InternetExplorerDriver()构造函数

特定驱动程序的
所需功能
包含在各种
选项
类中

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

至于你的具体问题,不可能。这也不是Selenium或IEDriverServer的限制,而是IE本身的限制。如果没有主要的黑客攻击,你不能同时在一台机器上安装多个版本的IE。换一种方式考虑——每当你升级IE时,它都会卸载以前的版本

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

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

编辑

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

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

IE中的兼容性引擎不是浏览器引擎的真实代表。因此,您必须认为您正在使用IE7兼容模式运行IE9,因此期望IE7完整运行—即使是Microsoft也不会这样说,而且它将用于临时测试—这是不可依赖的。因此,即使你能够做到这一点,这也不是一个可靠的测试,即使是最轻微的测试

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

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

在这一点上,Selenium将双手举在空中,它几乎无能为力

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

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


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

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

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

请至少添加一句听起来像问题的句子。问题在标题中。请仔细阅读。标题应该是对你的问题的描述,问题的主体应该包含一个问题。就这么简单。你好,阿兰,谢谢你的回答。我看到了options类并尝试了以下内容:options.addAddAdditionalCapability(CapabilityType.Version,“8”);这并没有给我期望的结果,即在您提到的IE限制方面,在指定的IE版本(例如IE8)中运行selenium测试。如果启动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”);IECCapabilities.setCapability(CapabilityType.VERSION,“8”);驱动程序=新的InternetExplorerDriver(IECCapabilities);