Запустите seleniumRC из Fitnesse

Я пытаюсь интегрировать запуск тестов Fitnesse из MSBuild в мою ночную сборку на TFS.

В попытке сделать его самодостаточным, я хотел бы запускать сервер seleniumRC только тогда, когда это необходимо из фитнеса.

Я видел, что есть "Fixture Command Line", но он написан на java, могу ли я его использовать?

Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
1
0
830
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

А как насчет написания простого .NET-приложения, которое выполняет Process.Start ("командную строку selenumRC"), которое запускается вашим сценарием сборки?

Если вы не слишком далеко по пути Selenium; Могу я предложить вам взглянуть на аналогичные инструменты автоматизации браузера .NET; в частности WatiN или ArtOfTest. Эти «стеки» полностью принадлежат .NET, поэтому гораздо проще запустить их на разных машинах.

Ответ принят как подходящий

I think you might be able to. You can call any process easily in MSBuild using the задача. Однако проблема заключается в том, что задача exec будет ждать завершения процесса Selinium, прежде чем продолжить, что не является желаемым поведением. Вы хотите запустить процесс, оставить его работающим во время сборки, а затем прервать его по завершении сборки.

Поэтому я думаю, что для этого вам, вероятно, потребуется создать специальную задачу MSBuild. См. Следующий пост для примера созданных кем-то задач, которые будут запускаться асинхронно, возвращая управление обратно сценарию сборки:

http://blog.eleutian.com/2007/03/01/AsyncExecMsBuildTask.aspx

А для примера вызова Java-программы из MSBuild (но в данном случае синхронно) взгляните на мою задачу, которая вызывает Муравей из MSBuild здесь

http://teamprise.com/products/build/

В рамках задачи MSBuild вы захотите вывести созданный вами идентификатор процесса в свойство вывода, чтобы в конце сценария сборки вы могли вызвать другую настраиваемую задачу MSBuild, которая завершает процесс. Это может быть сделано путем поиска идентификатора процесса, переданного в качестве переменной в MSBuild, а затем вызова метода Process.Kill, т.е.

Process process = Process.GetProcessById(ProcessId);
process.Kill();

Тем не менее, вам нужно быть осторожным, чтобы убедиться, что ваша задача уничтожения всегда выполнялась в MSBuild, убедившись, что она была включена в пути ошибок и т. д. В сборке. Вероятно, вы могли бы сделать вещи более устойчивыми, заставив стартовую задачу selenium RC искать другие процессы seleniumRC и уничтожать их перед запуском нового - таким образом, если процесс по какой-то причине не был закрыт должным образом, он будет работать только до тех пор, пока следующая сборка.

В любом случае, мой ответ звучит как большая работа, поэтому, надеюсь, кто-то другой найдет более простой способ. Возможно, вы сможете создать процесс seleniumRC в тестовом наборе, запускающем тесты FitNesse, и убить его при разрыве набора, или вы можете написать настраиваемую задачу, которая расширяет ваши задачи бегуна FitNesse и запускает seleiniumRC асинхронно перед запускает тестовый процесс, а затем убивает его.

Удачи,

Мартин.

Спасибо за ответы!

Вот как я поступал до сих пор.

Я сделал приспособление (очень простое), которое запускает процесс с предоставленной командной строкой, в моем случае startSelenium.bat. Прибор возвращает ProcessID, чтобы я мог сохранить его в моем фитнес-контексте и закрыть этот сеанс позже.

Теперь я могу сделать страницу SuiteSetUp в моем фитнес-тесте, которая выглядит следующим образом.

| RunCommandFixture |

| Командная строка | RunCommand? |

| C: \ Projects ... \ startSeleniumRC.bat | >> seleniumprocess |

и такой SuiteTearDown

| RunCommandFixture |

| ProcessID | StopCommand? | | <

Это подходит для меня. Никакой селен RC не запускается по просьбе моего фитнес-теста.

Другие вопросы по теме