只是想知道如何实例化InternetExplorerDriver的不同版本。如何实例化不同版本的InternetExplorerDriver - Selenium 2?
这就是我如何可以创建一个IE的驱动程序:
WebDriver ieWebDriver = new InternetExplorerDriver();
,但我不能IE6,IE7,IE8和IE9区分。
干杯,
只是想知道如何实例化InternetExplorerDriver的不同版本。如何实例化不同版本的InternetExplorerDriver - Selenium 2?
这就是我如何可以创建一个IE的驱动程序:
WebDriver ieWebDriver = new InternetExplorerDriver();
,但我不能IE6,IE7,IE8和IE9区分。
干杯,
仅适用于Windows支持安装一个IE版本。虽然有些黑客可以运行多个版本,但我确信你不会让他们使用WebDriver(尽管我很想证明是错误的)。
在你的鞋子里,我可能会为你想测试的每个版本设置一个Windows VM,并使用RemoteWebDriver与他们交谈。
但是,最新的IE支持“浏览器模式” - 只需按F12并选择浏览模式。 AFAIK它工作得很好 - 至少与IE8和IE7相比。 我很好奇它是否可以通过JavaScript访问并在Selenium中自动更改?
简单的答案是:不,您不能模拟F12硒。 “浏览器模式”不太可靠。看到http://stackoverflow.com/a/11418046/1080590 – Miro 2014-02-07 11:10:17
是的,你可以。 DesiredCapabilities有,你可以使用一个公共方法:
this.SetCapability(CapabilityType.BrowserName, "internet explorer");
this.SetCapability(CapabilityType.Version, "8");
this.SetCapability(CapabilityType.Platform, "WINDOWS");
我写扩展方法,使之更容易被此实例调用任何版本:
DesiredCapabilities internetExplorer8 =
DesiredCapabilities.InternetExplorer().SetVersion("8");
IWebDriver webDriver = new RemoteWebDriver(seleniumHubUrl, internetExplorer8);
如果使用RemoteWebDriver这确实是有道理的并有一个Selenium2 Grid/Hub设置多个节点,例如每个虚拟机具有不同版本的Internet Explorer,并且每个虚拟机都是连接到集线器的节点。
和扩展:
public static class DesiredCapabilitiesExtension
{
public static DesiredCapabilities SetBrowserName(this DesiredCapabilities desiredCapabilities, string browserName)
{
// make sure the browser name is lowercase
desiredCapabilities.SetCapability(CapabilityType.BrowserName, browserName.ToLowerInvariant());
return desiredCapabilities;
}
public static DesiredCapabilities SetVersion(this DesiredCapabilities desiredCapabilities, string version)
{
desiredCapabilities.SetCapability(CapabilityType.Version, version);
return desiredCapabilities;
}
public static DesiredCapabilities SetPlatform(this DesiredCapabilities desiredCapabilities, string platform)
{
// make sure the platform is case sensitive, uppercase to make it work
desiredCapabilities.SetCapability(CapabilityType.Platform, platform.ToUpperInvariant());
return desiredCapabilities;
}
}
这不似乎工作。当我尝试设置版本时,网格无法找到任何版本的IE。尽管它使用版本号转发会话,但无法使用正确的版本定位浏览器,并引发了无法找到具有这些功能的浏览器的异常。 – 2014-10-09 11:13:55
为了实例不同的版本,你可以使用capability.setVersion到所需版本号中设置的版本。与此同时,在启动节点,您需要在命令行中添加以下参数:
-browser “browserName = Internet Explorer中,MAXINSTANCES = 5,平台= Windows,版本= 8”
为了在同一节点支持多个版本,可以多次使用“浏览器”。
在节点启动时设置浏览器标志是非常重要的,否则网格将找不到所需的版本。谢谢! – Samuel 2016-11-07 21:19:07
是啊我打算有不同的IE安装多个虚拟机。以编程方式如何使用RemoteWebDriver调用不同的IE版本? – sebarmeli 2011-04-20 04:01:59
您的代码需要知道哪个服务器具有哪个IE版本,然后使用正确的URL实例化RemoteWebDriver。 – jarib 2011-04-20 09:38:03
Modern.IE网站允许您下载安装了各种版本IE的虚拟机映像https://www.modern.ie/en-us/virtualization-tools#downloads – 2014-10-23 08:32:05