Selenium Critique

Я просто хотел узнать мнение людей, которые использовали Selenium (http://selenium.openqa.org). У меня есть имел большой опыт работы с WaTiN и даже написал для него набор для записи. Я велел ему создавать хорошо структурированный код, но поддерживался только мной, похоже, моя компания почти отказалась от него.

Если вы использовали селен, добились ли вы успеха?

Я буду использовать .NET 3.5, хорошо ли с ним работает Selenium?

Код создается чистым или просто списком всех взаимодействий? (http://blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx)

Насколько хорош распределенный набор для тестирования?

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


person Adam Driscoll    schedule 19.09.2008    source источник


Ответы (5)


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

Хороший способ получить хороший код селена - использовать шаблон объекта страницы в способ, которым код представляет ваш навигационный поток. Вот хороший пример, который я вижу в Coding Dojo Floripa (из Бразилии):

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);
    }
}

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

person marcospereira    schedule 19.09.2008
comment
Привет, маркосперейра, я новичок в селене. Я пробовал этот пример, но когда я начинаю, у меня возникает проблема с невозможностью подключения к серверу. Я не понимаю, в чем я ошибаюсь. Пожалуйста помогите. Спасибо - person Pankaj Mishra; 06.12.2010

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

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

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

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

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

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

person Peter Bernier    schedule 19.09.2008

Я начал с 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. ChildNodes в JavaScript ненадежен, потому что Safari / Firefox игнорируют узлы пробелов и комментариев, а Internet Explorer - нет. XPath в Internet Explorer в 10-20 раз медленнее, чем в SF / FF. innerHTML не всегда надежен в IE.

person Howard    schedule 26.09.2008

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

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

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

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

person Petteri H    schedule 17.10.2008

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

person Mark Erdmann    schedule 22.07.2009