Использование Selenium 2.0 WebDriver на практике - PullRequest
7 голосов
/ 03 сентября 2011

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

Каждый тестовый пример должен выглядеть следующим образомthis:

package fm;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import static org.junit.Assert.*;

public class HomepageTest {

    @Test
    public void testTitle(WebDriver driver) {
        driver.get("http://localhost/");
        assertEquals("Foo", driver.getTitle());
    }

    @Test
    public void testSearchForm(WebDriver driver) {
        //...
    }

}

Переданные реализации WebDriver должны контролироваться где-то централизованно.Возможно, мне придется переопределить некоторые свойства JUnit, и я надеюсь, что это возможно.

Я хочу сделать это таким образом, чтобы избежать двух вещей:

  • Повторение кода:Если бы каждый тестовый случай инициализировал все протестированные браузеры в @Before, в тестовом наборе было бы много повторяющегося кода, который трудно поддерживать.
  • Скорость набора тестов: если бы я имел централизованный контроль над порядком иПройдя реализации WebDriver, я легко смог открыть, например, Firefox, запустить все тестовые сценарии, закрыть его и открыть следующий браузер.Если бы каждому тестовому сценарию удавалось открывать и закрывать браузеры по отдельности, это увеличивало бы время каждого запуска теста.

У кого-нибудь есть идеи, как мне это сделать?Спасибо.

Ответы [ 3 ]

2 голосов
/ 05 сентября 2011

В проекте Selenium мы вводим то, что нам нужно, используя http://code.google.com/p/selenium/source/browse/trunk/java/client/test/org/openqa/selenium/AbstractDriverTestCase.java, а затем наша сборка вызывает браузер, и в нем запускаются тесты.

Взгляните на нашу базу кода, чтобы получить вдохновение!

1 голос
/ 03 сентября 2011

Пожалуйста, проверьте с помощью ISFW , что он поддерживает селеновый веб-драйвер / удаленный веб-драйвер, а также обычный (selenium1) rc способ.Вам нужно написать код, используя обычный API селен, например

selenium.open(url);
selenium.type("loc", "text to type");
selenium.submit("loc");

Вот рабочая демоверсия .Установите строку браузера в соответствии с вашими требованиями.FW поддерживает селен обычным способом, а также селен 2 вебдрайвера.Вам необходимо установить соответствующую строку браузера в свойствах приложения.Ниже приведены различные конфигурации браузера для Firefox:

  • * firefox - требуемый сервер селена, работающий на сконфигурированном хосте / порту, если не найден, тогда fw проверит / запустит один на locahost / port
  • firefoxDriver- будет работать напрямую с веб-драйвером Firefox без сервера Selen
  • firefoxRemoteDriver - требуется сервер Selen, работающий на сконфигурированном хосте / порту, если не найден, тогда fw проверит / запустит сервер на locahost / port, он запустит тест с использованием Firefox Webдрайвер на хост-компьютере

То же самое для IE - * iexplore, * iehta, iexplorerDriver, iexplorerRemoteDriver и т. д.

0 голосов
/ 30 января 2012

Я сделал то, что вы есть / были? пытаюсь сделать со статическим классом, который контролирует webdriver и все мои тесты, которым нужен тот же webdriver, получить его оттуда. Это действительно помогает, когда вы запускаете несколько тестов, которые должны использовать один и тот же сеанс. И все ваши тесты выполняются в одном браузере, поэтому не каждый тест открывает новый экземпляр браузера.

Может быть, вам стоит взглянуть на testNG. Я понял, что testNG лучше подходит для тестов с селеном, поскольку он не ориентирован на независимые тесты. Он предлагает много полезных функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...