Настройка для IE6 (и нескольких браузеров) в Selenium Grid - PullRequest
3 голосов
/ 22 декабря 2009

Я с трудом пытаюсь понять некоторые концепции по селеновой решетке / RC. Что мне нужно, так это предоставить конкретные среды (т.е. 6-на-XP, т.е. 7-на-XP и т. Д.) Для тестов. Из того, что я читал, строка браузера в grid_configuration.yml не содержит никаких ссылок на то, какую версию MSIE или Firefox я использую. Поэтому я не могу понять, в какой форме я могу сказать Grid / RC, что мне нужны определенные браузеры и путь для их запуска (как RC знает, какой exe запустить?)

Во-вторых, я бы хотел запустить портативные версии этих браузеров. Я видел только то, что указано в тестах, а не в командной строке RC для их запуска. Это способ сделать это, за тест?

Ответы [ 2 ]

6 голосов
/ 22 декабря 2009

Я отвечу на ваш вопрос, разбив необходимую информацию

Что мне нужно, это предоставить конкретные окружения (т.е. 6-на-XP, т.е. 7-на-XP, и т. д.) к тестам.

Ну, поскольку вы не можете иметь несколько экземпляров IE на одной машине, я знаю, что есть приложения, которые позволяют вам это делать, но по моему опыту они вызывают больше проблем, чем их решение. В идеале вы хотите, чтобы разные машины запускали тесты. Делая это, вы также настраиваете ферму селена для ваших разработчиков, чтобы они могли нацеливать тест на конкретный экземпляр. Поэтому настройка Grid в качестве инфраструктуры - хороший шаг.

За то, что я читал, строка браузера в grid_configuration.yml не делайте никаких ссылок на то, что версия MSIE или Firefox я Бег. Так что я не могу разобраться в какой форме я могу сказать Grid / RC, что Я хочу, чтобы некоторые конкретные браузеры и путь для их запуска (как RC знает, какой Отлично бежать?)

YAML просто дает вам знать, что может обрабатывать сетка. При запуске сетки вам необходимо убедиться, что вы переходите в аналогичные конфигурации. Подумайте о Se: GRID так же, как о Se: RC, за исключением того, что вам все равно, где находится сервер RC, потому что вы разговариваете с центральным офисом, который позаботится обо всем остальном.

Если вам нужно запустить тесты для определенных элементов, вам нужно будет обработать это в настройках теста. Существует распространенное заблуждение, что все тесты будут выполняться одинаково в каждом браузере. Это произойдет, если вы никогда не полагаетесь на XPath или CSS-селекторы в своих тестах, потому что браузеры всегда обрабатывают это немного по-разному, и небольшие различия могут привести к нестабильным тестам, которых всегда следует избегать.

Один из способов указать, какой браузер использовать для теста, - это иметь центральный файл конфигурации. В C # это будет использовать app.config, который имеет коллекцию для каждого браузера и делает

Config

<Firefox>
 <addKey browserVersion='3.5.6' OS='WindowsXP'>
</Firefox>

Central Config Class ищет 1 элемент

 public class BoothElement : ConfigurationElement
    {
        [ConfigurationProperty("browserVersion", DefaultValue = "", IsKey = true, IsRequired = true)]
        public string browserVersion
        {
            get
            {
                return ((string)(base["browserVersion"]));
            }
            set
            {
                base["browserVersion"] = value;

            }
        }

Тесты

selenium = new DefaultSelenium(HubPort, HubPort, browserVersion, SUTServer);
selenium.Open("/test.htm");
//Rest of the test

В python вы можете создать массив в модуле, который вы включаете во все ваши тесты

include.py

hubServer = 'hub'
hubPort = 5555
sut = 'http://serverUnderTest'
firefox = [hubServer,hubPort,"\*chrome",sut]
iexplore = [hubServer,hubPort,"\*iehta",sut]

test.py

sel = selenium(firefox)
sel.open("/test.html")
#rest of the test

При использовании Selenium Grid попробуйте больше думать о нем как о структуре справочной инфраструктуры тестирования, и, надеюсь, это поможет вам немного больше.

Во-вторых, я хотел бы запустить портативный версии этих браузеров. Я только видно, что указано в тестах, и не в командной строке RC для запуска их. Это способ сделать это, согласно проверить?

Я никогда не пытался заставить Selenium работать в мобильных браузерах и не думаю, что он будет работать хорошо, однако в Selenium 2, которая в настоящее время находится в альфа-версии, есть поддержка Android для тестирования приложений.

ИЗМЕНИТЬ ИЗ КОММЕНТАРИИ

   - name:    "Firefox on OS X"
     browser: "*firefox"
   - name:    "Firefox on Linux"
     browser: "*firefox"
   - name:    "IE on Windows"
     browser: "*iehta"
   - name:    "Safari on OS X"
     browser: "*safari"

Итак, скажем, у нас есть вышеуказанная настройка, в соответствии с файлом YAML у нас есть несколько различных * экземпляров firefox. Таким образом, чтобы вызвать эти разные в наших тестах, наша команда настройки браузера выглядела бы как

selenium.Start(hubHost, hubPort, "Firefox on Linux", "http://serverUnderTest"); или selenium.Start(hubHost, hubPort, "Firefox on OS X", "http://serverUnderTest");

Хаб переведет это в * firefox для вас. Я предпочитаю иметь очень детализированные имена для своего окружения вместо обычного * firefox, чтобы в случае сбоя было легче определить, где оно было и в каком конкретном браузере.

1 голос
/ 31 декабря 2009

Виртуальные машины могут быть очень удобны для настройки «недорогих» мулов в ферме Selenium Grid.

...