Как создавать экземпляры разных версий InternetExplorerDriver - Selenium 2?

просто интересно, как я могу создавать различные версии InternetExplorerDriver.

Как я могу создать драйвер IE:

WebDriver ieWebDriver = new InternetExplorerDriver();

но я не могу отличить IE6, IE7, IE8 и IE9.

Приветствия,

Ответ 1

Windows поддерживает только одну версию IE. Хотя некоторые хаки существуют для запуска нескольких версий, я уверен, что вы не получите их работу с WebDriver (хотя я бы хотел, чтобы вас доказали неправильно).

В вашей обуви я бы, вероятно, настроил виртуальную машину Windows для каждой версии, которую вы хотите протестировать, и используйте RemoteWebDriver, чтобы поговорить с ними.

Ответ 2

Да, вы можете. Желаемые возможности имеют общедоступный метод, который вы можете использовать:

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, а каждая из них - node, подключенная к концентратору.

И расширение:

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;
    }
}

Ответ 3

Чтобы создать экземпляр разных версий, вы можете установить версию с помощью функции capability.setVersion на нужный номер версии. В то же время при запуске node вам необходимо добавить следующие параметры в командной строке:

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

Для поддержки нескольких версий с одним и тем же node вы можете использовать "-browser" несколько раз.

Ответ 4

Однако последний IE поддерживает "режим браузера" - просто нажмите F12 и выберите режим просмотра. AFAIK работает неплохо - по крайней мере, по сравнению с IE8 и IE7. Мне любопытно, можно ли получить доступ к javascript и автоматически изменить его в Selenium?