Селен Критика - PullRequest
       60

Селен Критика

16 голосов
/ 19 сентября 2008

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

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

Ответы [ 5 ]

26 голосов
/ 19 сентября 2008

Если вы используете 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);
    }
}

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

7 голосов
/ 19 сентября 2008

Я использую 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 - это только один из тех инструментов, которыми я пользуюсь каждый день, поэтому мне нравится помогать новым людям начать с него ..)

3 голосов
/ 26 сентября 2008

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

Теперь я использую 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.

1 голос
/ 23 июля 2009

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

1 голос
/ 17 октября 2008

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

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

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

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

...