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)

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
16
0
3 640
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

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

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

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

Привет, маркосперейра, я новичок в селене. Я пробовал этот пример, но когда я начинаю, я получаю «Не удается подключиться к серверу». Я не понимаю, в чем я ошибаюсь. Пожалуйста, помогите мне. Спасибо

Pankaj Mishra 06.12.2010 16:05

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

Если вы никогда не использовали Selenium, посмотрите некоторые из скринкасты для использования Selenium IDE. Это даст вам хорошее представление о том, как работает «Селен». 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 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.

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

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

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

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

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

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