Вопрос

Я просто хотел узнать несколько мнений от людей, которые запускали Selenium (http://selenium.openqa.org) У меня был большой опыт работы с WatiN, и я даже написал для него набор звукозаписей.Я заставил его создать какой-то хорошо структурированный код, но поскольку он поддерживается только мной, кажется, что моя компания практически отказалась от него.Если вы запускали selenium, добились ли вы большого успеха?Я буду использовать .NET 3.5, хорошо ли Selenium работает с ним?Создается ли код чистым или просто представляет собой список всех взаимодействий?(http://blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx) Насколько хорошо работает распределенный набор для тестирования?

Будем очень признательны за любые другие замечания или комплименты по поводу системы!

Это было полезно?

Решение

Если вы используете Среда разработки Selenium IDE чтобы сгенерировать код, вы просто получаете список всех действий, которые будет выполнять selenium.Для меня Selenium IDE - это хороший способ начать или выполнить быстрый тест "попробуй и посмотри".Но, когда вы думаете о ремонтопригодности и более читаемом коде, вы должны написать свой собственный код.

Хороший способ добиться хорошего кода selenium - это использовать Шаблон объекта Страницы таким образом, чтобы код представлял ваш навигационный поток.Вот хороший пример, который я вижу в Кодирование Додзе Флорипа (из Бразилии):

public class GoogleTest {

    private Selenium selenium;

    @Before
    public void setUp() throws Exception {
            selenium = new DefaultSelenium("localhost", 4444, "*firefox",
                            "http://www.google.com/webhp?hl=en");
            selenium.start();
    }

    @Test
    public void codingDojoShouldBeInFirstPageOfResults() {
            GoogleHomePage home = new GoogleHomePage(selenium);
            GoogleSearchResults searchResults = home.searchFor("coding dojo");
            String firstEntry = searchResults.getResult(0);
            assertEquals("Coding Dojo Wiki: FrontPage", firstEntry);
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }

}


public class GoogleHomePage {

    private final Selenium selenium;

    public GoogleHomePage(Selenium selenium) {
            this.selenium = selenium;
            this.selenium.open("http://www.google.com/webhp?hl=en");
            if (!"Google".equals(selenium.getTitle())) {
                    throw new IllegalStateException("Not the Google Home Page");
            }
    }

    public GoogleSearchResults searchFor(String string) {
            selenium.type("q", string);
            selenium.click("btnG");
            selenium.waitForPageToLoad("5000");
            return new GoogleSearchResults(string, selenium);
    }
}

public class GoogleSearchResults {

    private final Selenium selenium;

    public GoogleSearchResults(String string, Selenium selenium) {
            this.selenium = selenium;
            if (!(string + " - Google Search").equals(selenium.getTitle())) {
                    throw new IllegalStateException(
                                    "This is not the Google Results Page");
            }
    }

    public String getResult(int i) {
            String nameXPath = "xpath=id('res')/div[1]/div[" + (i + 1) + "]/h2/a";
            return selenium.getText(nameXPath);
    }
}

Надеюсь, это поможет

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

Я использую Selenium Remote Control для тестирования ASP.Сетевые приложения (на которые, я предполагаю, вы также будете ориентироваться), и это отлично работает.

Если вы никогда не использовали Selenium, посмотрите некоторые из скринкасты для использования Selenium IDE.Это даст вам хорошее представление о том, как работает "Selenium".IDE - это плагин для Firefox, который в основном позволяет вам разрабатывать быстрые тесты для записи и воспроизведения по ходу работы.Однако для больших наборов тестов или для написания действительно поддерживаемых тестов я бы порекомендовал Selenium Remote Control.(Однако IDE великолепна, если вы только начинаете.)

Селеновый Пульт Дистанционного Управления позволяет вам использовать ваш любимый язык и платформу модульного тестирования для управления веб-браузером для выполнения ваших тестов.Если вам удобнее всего работать с C # / NUnit, вы можете писать свои тесты таким образом и использовать все полезные функции NUnit, которые вам нравятся.(Например, плагин Test-Driven.net).Кроме того, поскольку ваши тесты написаны на языке высокого уровня, вы можете делать такие вещи, как наследование от определенного тестового класса, который вы можете использовать, чтобы сделать ваш фактический код метода тестирования намного чище.(Или, по крайней мере, именно так я пишу свои тесты.Это позволяет мне тестировать сложные сценарии, которые поддерживают количество строк моего метода тестирования на разумном уровне.)

Вы упомянули распределенное тестирование.К сожалению, я не нашел способа использовать Селеновая Решетка проект с помощью NUnit.Selenium Grid позволяет вам запускать ваш набор тестов на нескольких различных компьютерах и экземплярах браузера.Таким образом, вместо того, чтобы запускать, скажем, 200 методов тестирования один за другим (т. Е. последовательно), вы могли бы распределить нагрузку, скажем, по четырем экземплярам Grid (т. Е. работать в четырех разных экземплярах браузеров одновременно) на одной машине или нескольких машинах в зависимости от того, насколько распределенным вы хотите получить.

Однако, если вы напишете свои тесты на Java или PHP, вам, возможно, повезет больше.Я ожидаю, что это будет доступно через NUnit с выпуском NUnit2.5, который будет включать PNunit для параллельного тестирования.

Если у вас есть какие-либо дополнительные вопросы о selenium, просто уточните свой первоначальный вопрос, и я буду рад попытаться помочь вам.(Selenium - это всего лишь один из тех инструментов, которые я использую каждый день, поэтому мне нравится помогать новым людям знакомиться с ним ..)

Я начал с Selenium IDE и Selenium Core.Это определенно хорошие инструменты для начала работы.Но они не очень мощные, поскольку вы можете использовать только Selenese, командный язык Selenium на основе HTML.

Теперь я использую Selenium Remote Control с драйвером Ruby, что позволяет мне использовать то, что предлагает Ruby.Я тестирую множество сред:Windows 2000, XP, Vista, Mac 10.4 / 10.5 и для каждого из тех, которые применяются, Safari 2/3, Firefox 2/3, Internet Explorer 6/7.

Selenium утверждает, что совместим со всеми этими ОС и браузерами, хотя в настоящее время у меня возникают проблемы с Internet Explorer (на самом деле, мой первый вопрос о StackOverflow касается этого).Но я не знаю ни одного другого инструмента, который был бы таким мощным и работал бы с таким количеством платформ.

Самая большая проблема, с которой я столкнулся с Selenium, - это синтаксический анализ DOM.Дочерние узлы JavaScript ненадежны, потому что Safari / Firefox игнорируют узлы пробелов и комментариев, в то время как Internet Explorer этого не делает.XPath в Internet Explorer работает в 10-20 раз медленнее, чем в SF / FF.innerHTML не всегда надежен в IE.

Selenium - довольно приличный инструмент, но есть пара вещей, на которые следует обратить внимание:

  • Selenium IDE и Selenium core не имеют 100% одинаковой функциональности.Например, щелчок правой кнопкой мыши поддерживается IDE, но в текущей версии ядра его нет.Однако использование более новой версии из их репозитория решает эту проблему.

  • В случае ext js, gwt и т.д. Убедитесь, что у вас есть правильные идентификаторы для ваших элементов отображения, а не автоматически сгенерированные (случайные).

  • Ведение тестовых примеров.Я видел случаи, когда много усилий было потрачено на тесты Selenium и хорошее покрытие.Позже тесты начали давать сбои, так как человек, создавший их, был занят другими задачами, и никто больше не хотел к ним прикасаться.Но это была проблема с руководством, а не с Selenium.

Я большой поклонник Selenium.Однако одно важное замечание, о котором полезно знать заранее, заключается в том, что у Selenium IDE много проблем со всплывающими окнами.Эти проблемы не сохраняются в Selenium RC, но это может немного затруднить разработку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top