Перейти к содержимому

Фотография

Использование RemoteWebDriver для Grid


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 24 апреля 2012 - 13:33

Здравствуйте!
Возникла необходимость настроить Selenium Grid. Так как тесты написаны на Selenium Webdriver, то и решил использовать "RemoteWebDriver", но пока не удачно.
Я запустил хаб командой:java -jar selenium-server.jar -role hub.
Затем пытаюсь запустить RemoteWebDriver:
DesiredCapabilities desiredCapabilities = new DesiredCapabilities("firefox", "3.5.16", PlatformWin);
RemoteWebDriver RemDriver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), desiredCapabilities);
на последней строчке получаю ошибку: "Error forwarding the new session Empty pool of VM for setup {platform=WINDOWS, browserName=firefox, version=3.5.16}".

Читал так же http://code.google.c...nium/wiki/Grid2
Код запускаю в VS 2008.
Язык C#.
Прошу помогите пожалуйста!
  • 0

#2 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 25 апреля 2012 - 06:16

Попробовал по другому:
ICapabilities desiredCapabilities = DesiredCapabilities.Firefox();
RemoteWebDriver RemDriver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), desiredCapabilities);
Ошибки не возникает.
Но если использовать Оперу, Хром или IE то появляется ошибка:
"Error forwarding the new session cannot find : {platform=ANY, browserName=opera, version=}".
Почему возникает ошибка ?
  • 0

#3 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 25 апреля 2012 - 08:20

Кажется разобрался, хотя не до конца.
У меня при использовании оперы отображается ошибка, а на другом компьютере ошибка не возникает. Так и не понял почему.
И проблема с Chrome. Почему он не видит chromedriver.exe ? и где к нему прописать путь ?
  • 0

#4 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 25 апреля 2012 - 09:40

Нашел как победить проблему с хромом
Она описана тут
И кстати опера заработала сама собой.
  • 0

#5 ice-cream

ice-cream

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 25 апреля 2012 - 10:44

я запускаю Хаб, запускаю ноды сл строчкой "java -jar selenium-server-standalone-2.21.0.jar -role webdriver -hub http://localhost:4444/grid/register -browser browserName=firefox,maxInstances=5,platform=WINDOWS"
если нод больше, то к каждой последующей после указания платформы пишу еще порт

насчет ошибок...есть неплохой блог о том ,Как запустить тесты на Selenium Grid используя RemoteWebDriver и Java. попробуйте там найти. мне оч помогло;)
http://qtp-help.blog...-webdriver.html
  • 1

#6 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 25 апреля 2012 - 10:59

я запускаю Хаб, запускаю ноды сл строчкой "java -jar selenium-server-standalone-2.21.0.jar -role webdriver -hub http://localhost:4444/grid/register -browser browserName=firefox,maxInstances=5,platform=WINDOWS"
если нод больше, то к каждой последующей после указания платформы пишу еще порт

насчет ошибок...есть неплохой блог о том ,Как запустить тесты на Selenium Grid используя RemoteWebDriver и Java. попробуйте там найти. мне оч помогло;)
http://qtp-help.blog...-webdriver.html

А TestNG может работать с C# ?
  • 0

#7 ice-cream

ice-cream

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 25 апреля 2012 - 12:28

[/quote]
А TestNG может работать с C# ?
[/quote]
не уверена.еще слабо в этом разбираюсь
в C# может NuGet подойдет.
здесь описание http://seleniumhq.org/download/
  • 0

#8 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 25 апреля 2012 - 13:00


А TestNG может работать с C# ?

не уверена.еще слабо в этом разбираюсь
в C# может NuGet подойдет.
здесь описание http://seleniumhq.org/download/

Хорошо попробуем. Спасибо огромное за поддержку.
А для чего вообще используется TestNG ? Как я понял, он формирует xml файлик, который потом как то используется. Можете по подробнее объяснить, раз используете.
  • 0

#9 ice-cream

ice-cream

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 25 апреля 2012 - 15:13

Могу ошибаться, но кажется все выглядит сл. образом:
TEstNg -это тестовый фреймворк для запуска тестов (тот самый xml файликполучаем), разработанный на основе Junit и Nunit, только весьма усовершенствованный.
XML файлик используется для запуска теста.
У вас есть dll (C#) или java -class (Java), в котором описаны параметры теста (команды, какие браузеры запускать, что использовать WebDriver или RC). На оснофании этих файлов формируется xml.
главное в xml -это прописывается параллельный ли запуск тестов (4 конфигурации выбора) и количество потоков (думаю неограничено, разве что здравым смыслом). в нем указывается так же имя класса (или библиотек) ,которые тестятся, название браузера и пр. вид файла зависит от того, как и что вы используете.

На том, что я пробую осваивать...
Program - Selenium & Co (Webdriver, Grid)
Language - Java
IDE - Eclipse
FrameWork - TestNg
Тесты , которые запускаю при помощи Grid и TestNG имеют в @BeforeClass дополнительные строчки и @Parameter
Файлик xml по структуре похож на нижеприведенный:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/te...estng-1.0.dtd"> //DocTYpe information
<suite name="Same TestCases on Different Browser" verbose="3" parallel="tests" thread-count="4"> //name of test suit, parallels property is Tests (pic. attachment)
<test name="Test5" preserve-order="true"> //test name. name of each tests must be different
<parameter name="browser" value="firefox"/> //browser name
<classes>
<class name="test.Third"/> // the name of class, witch has tests
</classes>
</test>

<test name="Test6" preserve-order="true"> //same information
<parameter name="browser" value="firefox"/>
<classes>
<class name="test.Third"/>
</classes>
</test>

<test name="Test7" preserve-order="true">
<parameter name="browser" value="chrome"/>
<classes>
<class name="test.Third"/>
</classes>
</test>
<test name="Test8" preserve-order="true">
<parameter name="browser" value="chrome"/>
<classes>
<class name="test.Third"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->


Разьяснения к строкам:
здесь записан файл, в котором есть 4 потока, запуск тестов параллельный
4 теста с разными именами, но все тесты выполняются для одного класса -Third
и из 4 тестов 2 будут запускаться в хроме , а два будут идти в мозиле.

Распределение тестов по нодам (Selenium Grid) идет в зависимости от того, какие ноды у нас объяслены -тут масса вариантов.

Прикрепленные файлы


  • 0

#10 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 26 апреля 2012 - 05:15

То есть, весь тест который у меня был создан в виде Windos приложения, мне нужно переделать в dll?
ну то есть перенести весь код туда и использовать [TestFixture],[SetUp],[TearDown],[Test].
  • 0

#11 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 26 апреля 2012 - 08:55

выяснил что NUnit может распаралеливать тесты используя PUnit. Кто нибудь пытался сделать связку с PUnit и Selenium Grid ?
  • 0

#12 ice-cream

ice-cream

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 26 апреля 2012 - 08:58

стоп. если речь идет о десктопном приложении то вам точно не Grid нужен.
Selenium-это тестирование в браузере т.е веб-приложения.

Setup в C# тоже самое, что BeforeClass в java
teardown совпадает- там прописываете, то что должно происходить после теста -обычно закрытие браузера.
test -сам тест , методы, которые выполняются
Textfxture - ну думаю что-то вроде параметров.

На сколько мне известно, при использовании C# с Nunit вы build ваш класс, в котором есть тест и дальше запускаете его с Nunit.
другой вопрос, как вы пишите тест: через Selenium IDE или ручками?
  • 0

#13 Lemur

Lemur

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 26 апреля 2012 - 09:08

стоп. если речь идет о десктопном приложении то вам точно не Grid нужен.
Selenium-это тестирование в браузере т.е веб-приложения.

Setup в C# тоже самое, что BeforeClass в java
teardown совпадает- там прописываете, то что должно происходить после теста -обычно закрытие браузера.
test -сам тест , методы, которые выполняются
Textfxture - ну думаю что-то вроде параметров.

На сколько мне известно, при использовании C# с Nunit вы build ваш класс, в котором есть тест и дальше запускаете его с Nunit.
другой вопрос, как вы пишите тест: через Selenium IDE или ручками?

Я его писал полностью руками (Webdriver + c#). Я сейчас так и сделал(чтобы попробовать :)) и теперь пытаюсь понять как можно мои тесты распаралелить.
Вообщем в результате хотелось бы получить схему вроде показанную тут. Правда пока как то не очень получается. Попытаюсь использовать PUnit, но слабо себе представляю как это будет действовать.
  • 0

#14 bearoff

bearoff

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • Город:Харьков

Отправлено 15 мая 2012 - 16:40

Вообщем в результате хотелось бы получить схему вроде показанную тут.

О, моя схема )
К сожалению, в C# - не подскажу ничего по распараллеливанию.

По предыдущим вопросам - думаю, вы уже разобрались, но, на всякий случай пару замечаний:

Я запустил хаб командой:java -jar selenium-server.jar -role hub.
Затем пытаюсь запустить RemoteWebDriver:
...
на последней строчке получаю ошибку:

Тут проблема в том, что Grid = Hub + Node(s). За собственно браузеры отвечает node, и пока у хаба нет node, он не может ничего предложить тестам ("Empty pool of VM for setup").

если нод больше, то к каждой последующей после указания платформы пишу еще порт

А зачем запускать несоклько нодов на одной машине? Если вы хотите обеспечить этим поддержку нескольких браузеров, вы их можете просто перечислить в аргументах одного нода или прописать в nodeconfig.json (рекомендую).
  • 1


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных