В чем разница между удаленным управлением Selenium и WebDriver? - PullRequest
20 голосов
/ 24 октября 2010

Я не уверен, что понимаю разницу. API WebDriver также напрямую управляет выбранным браузером. Когда вместо этого следует использовать пульт управления селеном (selenium RC)?

Сейчас моя текущая ситуация - я тестирую веб-приложение, написав пакет с Selenium WebDriver API и позволяя ему работать на моем компьютере. Тесты занимают все больше и больше времени, поэтому я искал способы запустить тесты на сервере Linux.

Если я использую Selenium Remote Control, значит ли это, что мне нужно переписать все, что я написал, с помощью API WebDriver?

Я путаюсь с Selenium Grid, Hudson, Selenium RC. Я нашел плагин Selenium Grid для Hudson, но не уверен, включает ли он Selenium RC.

Я выбираю правильный маршрут? Я предполагаю следующую архитектуру:

  • Hudson работает на нескольких выделенных серверах Ubuntu.
  • Hudson работает с плагином Xvnc & Selenium Grid. (Нужно ли устанавливать Firefox отдельно?)
  • Селеновая сетка с тестовыми наборами Selen RC.

Я думаю, что это намного эффективнее, чем запуск теста на моем текущем рабочем компьютере с API WebDriver.

Ответы [ 2 ]

14 голосов
/ 24 октября 2010

WebDriver теперь Selenium 2. Базы кода Selenium и WebDriver объединяются.WebDriver преодолевает ряд проблем, с которыми сталкивается Selenium, а Selenium преодолевает ряд проблем, с которыми сталкивается Webdriver.

Если вы написали свои тесты в Selenium, вам не нужно переписывать их для работы с Selenium 2Мы, разработчики ядра, написали его так, чтобы вы создали экземпляр браузера и внедрили его в Selenium, а ваши тесты Selenium 1 будут работать в Selenium 2. Ниже приведен пример для вас.

// You may use any WebDriver implementation. Firefox is used here as an example
WebDriver driver = new FirefoxDriver();

// A "base url", used by selenium to resolve relative URLs
String baseUrl = "http://www.google.com";

// Create the Selenium implementation
Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);

// Perform actions with selenium
selenium.open("http://www.google.com");
selenium.type("name=q", "cheese");
selenium.click("name=btnG");

Selenium 2, к сожалению, не был добавлен в Selenium 2, но он не должен быть слишком длинным, пока он не будет добавлен, поскольку мы надеемся достичь бета-версии в ближайшие пару месяцев.

3 голосов
/ 24 октября 2010

Насколько я понимаю, реализация Webdriver началась чуть позже, чем Selenium RC. С моей точки зрения, WebDriver является более гибким решением, которое исправило некоторые досадные проблемы SeleniumRC.

WebDriver предоставляет стандартный интерфейс для тестирования веб-интерфейса. Существует несколько реализаций этого интерфейса (HTTP, специфичный для браузера и основанный на Selenium). Поскольку у вас уже есть несколько тестов WebDriver, вы должны быть знакомы с основными документами, такими как this

Тесты становятся все длиннее и длиннее, поэтому я искал способы запустить тесты на сервере Linux.

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

Если я использую пульт дистанционного управления Sleneium, это значит, я должен все переписать Я писал с помощью WebDriver API?

Обычно да. Если вы не реализовали какой-либо дополнительный слой между тестовым кодом и WebDriver.

Что касается сетки селена: Вы можете запустить несколько экземпляров Selenium RC на нескольких [виртуальных] узлах, а затем зарегистрировать их в Selenium Grid. Ваши тесты подключаются к Selenium Grid, и он перенаправляет все команды в экземпляры SeleniumRC, координируя их в соответствии с необходимыми браузерами.

Для получения подробной информации о плагине Hudson вы можете найти более подробную информацию здесь

...