Как создать разные версии InternetExplorerDriver — Selenium 2?

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

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

WebDriver ieWebDriver = new InternetExplorerDriver();

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

Ваше здоровье,


person sebarmeli    schedule 19.04.2011    source источник


Ответы (4)


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

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

person jarib    schedule 19.04.2011
comment
да, я планировал иметь несколько виртуальных машин с разными установками IE. Программно, как я могу вызывать разные версии IE с помощью RemoteWebDriver? - person sebarmeli; 20.04.2011
comment
Ваш код должен знать, какой сервер имеет версию IE, а затем создать экземпляр RemoteWebDriver с правильным URL-адресом. - person jarib; 20.04.2011
comment
Веб-сайт Modern.IE позволяет загружать образы ВМ с установленными различными версиями IE modern.ie /en-us/virtualization-tools#downloads - person Karel Frajták; 23.10.2014

Да, ты можешь. У 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;
    }
}
person Miro    schedule 15.12.2011
comment
это не работает. Когда я попытался установить версию, сетка не смогла найти ни одну версию IE. Несмотря на то, что он перенаправляет сеанс с номером версии, он не может найти браузер с правильной версией и выдает исключение, что не может найти браузер с этими возможностями. - person 0o'-Varun-'o0; 09.10.2014

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

-browser "browserName = Internet Explorer, maxInstances = 5, платформа = WINDOWS, версия = 8"

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

person Atira_Jak    schedule 10.12.2014
comment
Важно установить флаг браузера при запуске узла, иначе сетка не найдет нужную версию. Спасибо! - person Samuel; 08.11.2016

Однако последняя версия IE поддерживает «режим браузера» — просто нажмите F12 и выберите режим просмотра. Насколько я знаю, это работает довольно хорошо - по крайней мере, по сравнению с IE8 и IE7. Мне любопытно, можно ли получить к нему доступ с помощью javascript и автоматически изменить в Selenium?

person LadyRoot    schedule 27.04.2011
comment
Простой ответ: нет, вы не можете смоделировать F12 с помощью Selenium. Браузерный режим не совсем надежен. См. stackoverflow.com/a/11418046/1080590. - person Miro; 07.02.2014