Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 如何实例化InternetExplorerDriver-Selenium 2的不同版本?_Testing_Integration Testing_Webdriver_Selenium Webdriver - Fatal编程技术网

Testing 如何实例化InternetExplorerDriver-Selenium 2的不同版本?

Testing 如何实例化InternetExplorerDriver-Selenium 2的不同版本?,testing,integration-testing,webdriver,selenium-webdriver,Testing,Integration Testing,Webdriver,Selenium Webdriver,只是想知道如何实例化InternetExplorerDriver的不同版本 这就是我创建IE驱动程序的方法: WebDriver ieWebDriver = new InternetExplorerDriver(); 但我无法区分IE6、IE7、IE8和IE9 干杯,Windows仅支持安装单个IE版本。虽然有些黑客可以运行多个版本,但我很确定你不会让他们使用WebDriver(尽管我希望被证明是错误的) 如果您愿意,我可能会为您要测试的每个版本设置Windows虚拟机,并使用RemoteWe

只是想知道如何实例化InternetExplorerDriver的不同版本

这就是我创建IE驱动程序的方法:

WebDriver ieWebDriver = new InternetExplorerDriver();
但我无法区分IE6、IE7、IE8和IE9


干杯,

Windows仅支持安装单个IE版本。虽然有些黑客可以运行多个版本,但我很确定你不会让他们使用WebDriver(尽管我希望被证明是错误的)


如果您愿意,我可能会为您要测试的每个版本设置Windows虚拟机,并使用RemoteWebDriver与他们交谈。

但是,最新的IE支持“浏览器模式”-只需按F12并选择浏览模式。 AFAIK它运行得相当好-至少与IE8和IE7相比。
我很好奇它是否可以通过javascript访问并在Selenium中自动更改?

是的,您可以。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网格/集线器设置为多个节点,例如多个虚拟机,每个虚拟机都具有不同版本的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;
    }
}

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

-浏览器“browserName=internet explorer,maxInstances=5,platform=WINDOWS,version=8”


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

是的,我计划在多个虚拟机上安装不同的IE。如何使用RemoteWebDriver以编程方式调用不同的IE版本?您的代码需要知道哪个服务器具有哪个IE版本,然后使用正确的URL实例化RemoteWebDriver。Modern.IE网站允许您下载安装了各种IE版本的VM映像简单回答是:否,不能用Selenium模拟F12。“浏览器模式”不太可靠。看,这似乎不起作用。当我尝试设置版本时,网格无法找到IE的任何版本。虽然它正在转发具有版本号的会话,但它无法找到具有正确版本的浏览器,并引发一个异常,即它无法找到具有这些功能的浏览器。必须在节点启动时设置浏览器标志,否则网格将无法找到所需的浏览器版本谢谢