Подтвердить что ты не робот

Почему мы используем WebDriver вместо Selenium IDE?

Почему мы не можем просто записать все наши тестовые примеры в Selenium IDE, экспортировать его в Java/WebDriver и запустить его в WebDriver с помощью Eclipse?

Мне нужно четкое объяснение, так как я очень запутался в использовании WebDriver!

И может ли кто-нибудь объяснить, почему сценарии, записанные в IDE, терпят неудачу в WebDriver?

4b9b3361

Ответ 1

почему мы не можем записать все наши тестовые примеры в среде IDE, экспортировать их в java/webdriver и запустить в webdriver

Отличный вопрос, и вот ответ:

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

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

Это также сводится к вашим принципам автоматизации тестирования. Автоматизация тестирования в МОЕМ мнении (и нескольких других специалистах), полагают, что к автоматизации тестирования следует подходить с точки зрения программирования. Программисты должны писать тесты и проводить тесты. В идеале ваш персонал по обеспечению качества должен быть обучен писать и проводить собственные тесты.

Итак, вернемся к вашему вопросу, IDE разработана для быстрого решения проблемы автоматизации, а не для решения полного набора регрессии.

И может ли кто-нибудь объяснить, почему сценарии, записанные в IDE, терпят неудачу в Webdriver?

Я не использовал IDE через некоторое время, но причина, по которой они терпят неудачу, заключается в том, что экспортируемые скрипты - это просто шаги, а не весь Java файл. Это также связано с тем, что Selenium IDE-экспорт должен быть агностик, когда дело доходит до запуска теста. Скажем, я пользователь jUnit.. что, если Selenium IDE все время экспортирует его в TestNG? Это было бы несправедливо. Честно говоря, я бы предпочел создать свои собственные тесты, не меняя одну строку каждый раз, когда создаю свой тестовый файл.

Вы можете прочитать полный текст исследования, которое называется Почему тесты записи/повтора веб-приложений перерыв?

Ответ 2

Почему мы не можем просто записать все наши тестовые примеры в Selenium IDE, экспортировать его в Java/WebDriver и запустить в WebDriver с Eclipse.

Вы действительно можете сделать это с помощью Selenium IDE довольно легко. Запишите тестовый пример/тестовый пакет в Selenium IDE, экспортируйте в "Java/JUnit 4/Webdriver" в .java файл. Это создаст тест JUnit, который вы можете импортировать и запускать из Eclipse (с правильной версией JUnit, конечно).

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

tw45u.png

Ответ 3

Почему бы просто не записывать в IDE и воспроизводить запись с помощью WebDriver???

IDE не знает, чего ждать

Предположим, что Боб выполняет ручные проверки и записывает свое взаимодействие с Selenium IDE. Он выполняет операцию, требующую времени для обновления графического интерфейса, и когда операция завершена, он нажимает кнопку. Боб знает, что графический интерфейс завершил обновление, потому что счетчик, который показывался при запуске операции, удаляется, когда операция завершена. Как IDE собирается захватить тот факт, что операция должна быть закончена, прежде чем нажимать на кнопку? (Обратите внимание, что это не тот случай, когда кнопка отключена до завершения операции.) Это не гипотетично: при тестировании динамических таблиц (например, управляемых DataTables) пользователь может в любой момент изменить что-либо.

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

Можно добавлять ожидания вручную в IDE, но если вы это делаете, то вы больше не "просто записываете все наши тестовые примеры". И то, что вы делаете, больше походит на написание кода для WebDriver.

Пользователи неэффективны

Недавно был вопрос Selenium, в котором пользователь хотел, чтобы Selenium нажал на последнюю запись в таблице с несколькими страницами записей. Таким образом, вопрос состоял в том, как я могу перейти через таблицу, вплоть до последней страницы, а затем щелкнуть последнюю запись? Кто-то (может быть, я, может быть, кто-то еще) указал, что если таблица сортируема, ее можно отсортировать в обратном порядке, а затем код Selenium может щелкнуть по первой записи. Операции 2, а не p+1: нажатие p раз, где p - количество страниц, плюс 1 раз для клика по записи.

Когда мы пишем код для WebDriver, у нас есть возможность написать тесты, чтобы не брать живописный маршрут для получения желаемых результатов. См. Следующий пункт технических подробностей относительно того, почему это имеет значение.

Операции селена могут быть дорогостоящими

Если программное обеспечение, которое запускает ваши команды Selenium, является локальным, а ваш браузер является локальным, вы можете не чувствовать, что операции Selenium могут быть дорогостоящими, но если вы запускаете свои команды на одной машине, а браузер удален, вы заметите значительное замедление. Например, если вы создаете свой браузер в виртуальной лаборатории Sauce Labs или в VM BrowserStack для запуска набора тестов, задержки в сети будут добавлять значительное время на то, как долго он будет заполняться. Для полного набора тестовых приложений это может означать много минут.

IDE создает последовательность команд, каждая из которых требует взаимного отключения между Selenium script и браузером. Каждый раунд туда и обратно складывается. Предположим, я хочу проверить, что два элемента содержат один и тот же текст. Я не буду использовать Selenese, потому что я обычно не использую IDE, но используя код WebDriver в Python, script может быть:

a = driver.find_element_by_id("a")
b = driver.find_element_by_id("b")
assert_equal(a.text, b.text)

Для этого кода требуется 4 раунда: один разворот на find_element... и один на доступ к полю text. Тот же тест можно написать:

a_text, b_text = driver.execute_script("""
var a = document.getElementById("a");
var b = document.getElementById("b");
return [a.textcontent, b.textContent];
""");
assert_equal(a_text, b_text);

Для этого требуется только одна поездка туда и обратно. Когда вы используете IDE для записи действий, последовательность команд похожа на предыдущий фрагмент: много раундов. Когда вы пишете свой код для WebDriver, у вас есть возможность оптимизировать, когда вы код.

Это не означает, что Selenium IDE не имеет смысла, но я никогда не подумал бы просто записывать тесты с ним, а затем воспроизводить эти записи с помощью WebDriver.

Ответ 4

Если вы новичок, вы можете использовать 80% вашей IDE script в качестве вашего веб-браузера JAVA script, вам просто нужно слегка импровизировать экспортируется IDE script, и он будет работать нормально.

Но когда вы начинаете тестировать сложные функции, вам нужно изучить некоторые из основных java-методов для его разработки!

Ответ 5

webdriver позволяет выполнять ваши тестовые примеры, собранные с помощью Selenium IDE на сервере Selenium или через RC на несколько серверов. Это включает опции для интеграции с поставщиками с поддержкой селена (см. Ссылку внизу).

Например, если вы захватили тестовый пример в среде IDE, вы можете легко интегрироваться с вашим собственным сервером селена или поставщиком, таким как Saucelabs, для работы с вашими тестовыми примерами в Firefox на Ubuntu, Safari на OSX и IE10 на Windows 8. Как и в любом случае, вы можете запустить его из своей среды IDE (Eclipse/IDEA/etc) вашего разработчика (maven/ gradle/) и/или через вашу систему CI.

Посмотрите https://saucelabs.com/selenium для некоторых примеров. Мы также использовали наши тестовые примеры селена для тестирования нагрузки с помощью Soasta - WebDriver позволяет использовать простые тесты IDE во многих разных контекстах.

Ответ 6

Потому что, когда сложность вашего кода будет увеличиваться, вам будет сложно управлять им с помощью IDE. Обслуживание ваших скриптов будет затруднено с помощью IDE.

Также экспорт тестовых примеров из IDE в webdriver не является на 100% надежным.

Ответ 7

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

Я согласен с тем, что записанный script должен быть проворным. Это не может быть просто так же просто, как сборка в командах, и нужно сделать его гибким и даже реализовать свои собственные макросы (так называемые команды/псевдонимы), специфичные для тестируемого приложения.

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

Maintanance прост, так как среда IDE поможет вам быстро настроить неудавшийся CMD, и ожидания AJAX могут быть легко учтены, ожидая изменения содержимого DOM на странице. Я все еще не убежден в этом оправдании AJAX для отклонения Selenium IDE.

Для интеграции Maven управления потоками команды/псевдонимы/макросы, используемые тестовым плагином Selenium IDE и Maven SureFire, см. https://github.com/paulbors/sideflow

Не стесняйтесь использовать его в своем продукте и при необходимости улучшать.

Ответ 8

Другие люди сказали много полезных ответов. Одна вещь, которая отсутствует, заключается в том, что если вы пишете код вместо использования IDE, у вас есть возможность внести изменения в базу данных. Это зависит от того, на каком веб-сайте вы тестируете, насколько это полезно, но вот некоторые полезные примеры, которые я испытал. В одном случае сайт имел несколько разделов класса. Один из наших тестов заключался в объединении этих разделов в один. IDE не могла этого сделать. Но с помощью webdriver мы можем добавить все наши тестовые данные в базу данных, выполнить слияние, а затем удалить данные из базы данных.

Другим преимуществом, которое имеет webdriver, является Selenium Grid. С помощью Grid вы можете запускать свои тесты параллельно и в нескольких браузерах. Это заставляет ваше тестирование работать быстрее, и вы можете более тщательно протестировать код.