Я отвечу на ваш вопрос, разбив необходимую информацию
Что мне нужно, это предоставить конкретные
окружения (т.е. 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, чтобы в случае сбоя было легче определить, где оно было и в каком конкретном браузере.