Разное

Selenium уроки: Пишем автотест с использованием Selenium Webdriver, Java 8 и паттерна Page Object / Хабр

Содержание

Selenium WebDriver: полное руководство — Видеоуроки

  • Урок 1.
    00:09:30

    Что такое Selenium

  • Урок 2.
    00:17:13

    Принцип работы Selenium

  • Урок 3.
    00:14:33

    Краткая история развития Selenium

  • Урок 4.
    00:10:34

    Стандарт W3C WebDriver

  • Урок 5.
    00:11:02

    Сравнение с конкурентами

  • Урок 6.
    00:07:12

    Источники информации о Selenium

  • Урок 7.
    00:06:05

    Инфраструктура для C#

  • Урок 8.
    00:06:33

    Инфраструктура для Java

  • Урок 9.
    00:09:06

    Инфраструктура для JavaScript

  • Урок 10.
    00:06:54

    Инфраструктура для Python

  • Урок 11.
    00:05:23

    Инфраструктура для Ruby

  • Урок 12.
    00:04:04

    Общее описание инфраструктуры

  • Урок 13.
    00:07:09

    Действия с элементами

  • Урок 14.
    00:08:03

    Единообразие на всех языках

  • Урок 15.
    00:05:38

    Запуск браузера

  • Урок 16.
    00:07:14

    Ключевые команды Selenium

  • Урок 17.
    00:03:32

    Открытие страниц

  • Урок 18.
    00:07:32

    Поиск элементов

  • Урок 19.
    00:04:27

    Резюме

  • Урок 20.
    00:05:58

    Запуск в разных браузерах

  • Урок 21.
    00:08:45

    Куда положить прокладку

  • Урок 22.
    00:13:43

    Совместимость с браузерами

  • Урок 23.
    00:07:23

    Capabilities

  • Урок 24.
    00:05:15

    Опции командной строки

  • Урок 25.
    00:04:29

    Запуск Chrome

  • Урок 26.
    00:04:57

    Запуск Internet Explorer

  • Урок 27.
    00:09:20

    Запуск Firefox

  • Урок 28.
    00:06:52

    selenium3_l3_m9_pseudo

  • Урок 29.
    00:09:43

    Работа с cookies

  • Урок 30.
    00:08:29

    Несколько браузеров сразу

  • Урок 31.
    00:10:22

    Параллельный запуск

  • Урок 32.
    00:09:12

    Document Object Model

  • Урок 33.
    00:09:49

    Локаторы

  • Урок 34.
    00:15:39

    CSS Selectors

  • Урок 35.
    00:09:26

    XPath

  • Урок 36.
    00:09:14

    Сравнение типов локаторов

  • Урок 37.
    00:08:40

    Поиск относительно элемента

  • Урок 38.
    00:03:54

    Поиск нескольких элементов

  • Урок 39.
    00:12:52

    Элемент не найден

  • Урок 40.
    00:11:17

    Ожидание появления элемента

  • Урок 41.
    00:12:17

    Правила построения локаторов

  • Урок 42.
    00:06:17

    Поиск при помощи JavaScript

  • Урок 43.
    00:14:05

    Получение атрибутов элемента

  • Урок 44.
    00:06:22

    Определение видимости элемента

  • Урок 45.
    00:03:49

    Получение текста элемента

  • Урок 46.
    00:11:32

    Получение стилей элемента

  • Урок 47.
    00:07:17

    Размер и положение элемента

  • Урок 48.
    00:11:30

    Клик левой кнопкой мыши

  • Урок 49.
    00:11:35

    Ввод текста (sendKeys)

  • Урок 50.
    00:06:40

    Очистка поля ввода (clear)

  • Урок 51.
    00:18:37

    Advanced Interactions API

  • Урок 52.
    00:06:48

    Работа со сложными элементами

  • Урок 53.
    00:06:01

    Работа с невидимыми элементами

  • Урок 54.
    00:11:29

    Ожидание появления элемента

  • Урок 55.
    00:06:11

    Проверка наличия и отсутствия элемента

  • Урок 56.
    00:08:59

    Ожидание исчезновения элемента

  • Урок 57.
    00:06:50

    Ожидание видимости элемента

  • Урок 58.
    00:09:58

    Другие условия ожидания

  • Урок 59.
    00:09:38

    Ожидание загрузки страницы

  • Урок 60.
    00:07:46

    Особые ситуации

  • Урок 61.
    00:08:37

    Alert

  • Урок 62.
    00:02:16

    Загрузка файлов на сервер

  • Урок 63.
    00:15:16

    Окна

  • Урок 64.
    00:05:31

    Фреймы

  • Урок 65.
    00:03:07

    Размер и положение окна

  • Урок 66.
    00:04:05

    Команды close и quit

  • Урок 67.
    00:03:03

    Загрузка файлов с сервера

  • Урок 68.
    00:16:40

    Selenium Server

  • Урок 69.
    00:12:26

    Selenium Grid

  • Урок 70.
    00:14:49

    Selenium Grid Extras

  • Урок 71.
    00:10:12

    Selenium в контейнере

  • Урок 72.
    00:08:35

    Selenium в облаках

  • Урок 73.
    00:05:59

    EventFiringWebDriver C#

  • Урок 74.
    00:03:46

    EventFiringWebDriver Python

  • Урок 75.
    00:04:18

    EventFiringWebDriver Ruby

  • Урок 76.
    00:05:01

    EventFiringWebDriver Java

  • Урок 77.
    00:06:42

    Снятие скриншотов

  • Урок 78.
    00:07:25

    Доступ к логам браузера

  • Урок 79.
    00:10:40

    Перехват трафика

  • Урок 80.
    00:12:21

    Page Objects в теории

  • Урок 81.
    00:22:38

    Page Objects на практике

  • Урок 82.
    00:10:43

    Альтернативы Page Objects

  • Урок 83.
    00:07:30

    Драйверы

  • Урок 84.
    00:17:47

    Надстройки

  • Урок 85.
    00:14:16

    Адаптеры

  • тренинги — Selenium WebDriver: полное руководство

    Описание

    Тренер: Баранцев Алексей, участник команды разработки инструмента Selenium

    Если Вы попали на эту страницу — значит, нет смысла рассказывать Вам про популярность Selenium и убеждать в необходимости его изучения, Вы это и так уже понимаете. Вопрос не в том, изучать или нет, а в том, как именно изучать.

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

    1. Selenium во главе угла

    Достаточно часто можно встретить “тренинги по Selenium”, программа которых содержит всё, что пришло в голову автору учебного курса — основы программирования, XML, SQL, JUnit, Maven, Jenkins, Git, ну и немного про Selenium.

    Это, конечно, выглядит привлекательно — на одном тренинге выучить сразу всё. Но в итоге получается в точности наоборот — ни одна из тем не покрывается достаточно полно.

    В нашем тренинге главным будет Selenium.

    Это не означает, что смежные темы совсем не будут рассматриваться. Целое занятие будет посвящено настройке инфраструктуры. Говоря о поиске элементов, нельзя обойти стороной XPath и CSS. При обсуждении способов запуска тестов попутно поговорим про Docker. Разговор о шаблоне проектирования PageObject и его альтернативах тесно связан с вопросом о том, как вообще строить архитектуру тестов.

    Но про Selenium мы расскажем всё и с подробностями, а всё остальное — по касательной, со ссылками для дальнейшего самостоятельного изучения.

    2. Полнота материала

    Ни на каком другом тренинге и ни в одной книге Вы не найдёте более полной информации о Selenium 3.0.

    Если найдёте — мы Вам дадим скидку 50% на этот учебный курс 🙂

    3. Мультиязычность

    Основные принципы и приёмы использования Selenium, рассматриваемые в тренинге, будут сопровождаться примерами на пяти языках, которые “официально” поддерживаются разработчиками Selenium: Java, C#, Python, Ruby, JavaScript.

    Selenium это языковонезависимый стандарт, описывающий набор команд для управления браузером. Реализации этого стандарта для разных языков программирования похожи друг на друга, и это неудивительно — они реализуют один и тот же набор команд.

    Вместе с тем, особенности каждого языка, его стиль, накладывают отпечаток на реализацию Selenium для этого языка. Поэтому в тренинге будут специальные модули, посвящённые именно таким особенностям.

    Даже если какой-то язык для вас “неродной” — мы всё равно рекомендуем смотреть “чужие” модули. Может быть после этого вы решите сменить язык 🙂

    4. Selenide, Protractor, PageObjects и другие модные темы

    Отдельное занятие будет посвящено разнообразным надстройкам над Selenium.

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

    Каждая надстройка добавляет что-то к функциональности Selenium, поэтому их удобно рассматривать не как самостоятельные инструменты, а именно в сравнении с Selenium — чем именно каждая из них отличается от общего “базиса”.

    Подробную программу курса смотрите чуть ниже.

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

    Это курс для тех, кто умеет программировать. Если не умеете — тогда посмотрите наши тренинги “Программирование для тестировщиков”, есть версии для Java, C# и Python. Впрочем, можно пройти любой другой тренинг или научиться программировать самостоятельно. Если не хотите учиться программировать — обратите внимание на курс “Selenium: стартовый уровень”, в нём рассматривается инструмент Selenium IDE, который не требует умения писать код.

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

    Необходимо понимать, как работает браузер. Слова HTML, CSS, JavaScript, DOM, HTTP не должны звучать как незнакомая и непонятная абракадабра.

    Нужно будет выполнять домашние задания. Для успешного применения инструмента недостаточно получить информацию о нём, нужно выработать навыки. Это происходит только путём тренировки, самостоятельного решения сначала простых, а потом более сложных задач. Выполнение домашних заданий потребует в среднем около 4 часов в неделю. Смотреть лекции недостаточно. Придётся работать руками и головой. Будьте готовы к этому.

    Подробная программа курса

    1. Общая информация

    • Что такое Selenium
    • Краткая история развития
    • Принцип работы Selenium WebDriver
    • Стандарт W3C WebDriver
    • Сравнение с конкурентами
    • Источники информации

    2. Первые шаги: пробежимся по верхам

    • Необходимая инфраструктура
    • Подготовка инфраструктуры для Java, C#, Python, Ruby, JavaScript
    • Запуск и останов браузера
    • Открытие страниц и ожидание загрузки страницы
    • Поиск элементов на странице
    • Действия: click и sendKeys
    • Свойства элементов: getText и getAttribute

    3. Запуск браузеров

    • Исполняемые файлы-посредники
    • Выбор «правильной» версии браузера
    • Особенности запуска на разных операционных системах
    • Capabilities
    • Cookies, чистый и грязный запуск
    • Подробнее про каждый браузер (Chrome, Firefox, Internet Explorer, Edge, Safari, другие)
    • Работа с несколькими браузерами одновременно
    • WebDriverFactory

    4. Поиск элементов

    • Типы локаторов
    • Какие локаторы лучше всех?
    • Отладка локаторов
    • Надёжные и ненадёжные локаторы
    • Списки элементов
    • Поиск внутри элемента
    • Неявные ожидания
    • Стратегии ожидания загрузки страницы
    • Поиск при помощи executeScript

    5. Получение свойств элементов

    • Атрибуты и свойства
    • Текст
    • Видимость
    • Размер и положение
    • Стили

    6. Действия с элементами

    • Простые
      • click
      • sendKeys
      • clear
      • submit
    • Сложные
      • Наведение мыши
      • Перетаскивание
      • Правая кнопка мыши
      • Управление по координатам
      • Модификаторы (ctrl, shift)

    7. Ожидания (WebDriverWait)

    • Ожидание появления
    • Ожидание видимости
    • Ожидание исчезновения
    • Ожидание свойств элемента
    • Ожидание нужного количества элементов
    • Произвольные условия ожидания
    • StaleElementReferenceException и борьба с ним
    • Неудачные попытки как альтернатива ожиданиям

    8. Окна и диалоги

    • Alerts
    • Uploading files
    • Downloading files
    • Окна и вкладки
    • Фреймы

    9. Удалённый запуск

    • Selenium Server
    • Selenium Grid
    • Selenium Grid Extras
    • Облачные сервисы

    10. Протоколирование

    • EventFiringWebDriver
    • Доступ к логам браузера
    • Снятие скриншотов
    • Запись видео
    • Запись трафика

    11. PageObjects и другие шаблоны проектирования

    • Откуда “ноги растут” у этого шаблона проектирования?
    • Разделение зон ответственности в тестах
    • Различные реализации PageObjects
    • Альтернативные шаблоны проектирования (PageBocks, Services)

    12. Расширения и обёртки

    • Драйверы (Appium, Winium, Windows Application Driver)
    • Альтернативные API (Watir, Selenide, FluentSelenium)
    • BDD и другие альтернативные стили (RobotFramework, Serenity, Capybara, Geb, ScalaTest)

    Отзывы

    Шмыга Алексей

    Очень понравился курс! Действительно очень полная информация и хорошая ее подача. Хоть я и имею не малый опыт в автоматизации все равно нашел для себя много интересного. Курс однозначно стоит своих денег. Так же отдельно хотелось бы отметить подачу материала — пройдя множество различных курсов и тренингов (не только по автоматизации) могу смело заявить что Алексей один из лучших преподавателей материала. Рассказывает очень понятно, хорошо систематизирует информацию и всегда дает хорошие ответы на вопросы. Из того что можно было бы улучшить это наверное домашние задания — было бы хорошо сделать каждое задание меньше в объеме и увеличить охват материала прошедшей лекции (например после лекции локаторов давать задание на все типы локаторов(именно что бы человек должен был использовать каждый тип) но что бы написать их нужно было скажем для одной страницы), это задание можно разбить на несколько (задание на xpath, отдельно на css, еще одно на id-name-class…) Не у всех хватает после работы времени на выполнение длинного задания и человек начинает отставать из-за нехватки времени. Если бы задания были меньше в объеме то можно было бы их выполнять каждый день и по немногу. Однако так же подчеркну что в текущем виде домашние задания все равно хороши — они соответствуют уровню подаваемого материала и заставляют думать что есть хорошо для усвоения материала 🙂 Еще раз спасибо!

    Голубков Александр

    Курс оказался полезнее, чем я ожидал.

    Как и многие, мои коллеги, оставившие отзывы выше, я не ждал от курса сюрпризов, принимая во внимание ранее изученный курс «Разработка тестов на JAVA с использованием Selenium 2.0» и постоянную практику использования этого инструмента.

    Однако курс оказался довольно насыщенным и (местами) напряженным. Довольно много свежей информации, нюансов, секретов.

    Информация отлично структурирована и удобна для освоения. Всегда можно пересмотреть нужный кусок лекции, если о чем-то забыл.

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

    Занятия два раза в неделю отлично держат в тонусе, хотя бывает тяжело совмещать с работой.

    В плане улучшений, возможно имеет смысл (особенно для людей слабо владеющих языками программирования) давать в СДО наименования разделов, рекомендуемых к обучению (например — Списки, Множества, Массивы и т.д.).

    В Скайп-чате много вопросов по реализации на языке программирования тех или иных подходов, продемонстрированных в лекции.

    Курс позволяет с первых лекций начать применять Selenium в работе, что очень и очень важно!

    Спасибо!

    Oleksandra Huzenko, Exigen Services, QA

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

    Второй момент. Гораздо лучше, что тренинг выкладывался по два занятия в неделю. По небольшим кускам гораздо легче (ИМХО) осваивать материал.

    Посмотреть все отзывы

     

    Selenium WebDriver + Java для начинающих

    Selenium WebDriver + Java для начинающих — Видеоуроки

    Selenium WebDriver + Java для начинающих

    udemy

    Продолжительность

    14:43:53

    Количество уроков

    75 Видео

    Дата добавления

    24/12/2017

    Дата выхода

    07/12/2017

    Дата обновления

    31/01/2019

    Автоматизация тестирования веб-проектов еще не была такой простой с Selenium WebDriver. В этом курсе вы узнаете все основные возможности Selenium Webdriver, а также рассмотрите основы языка java, с помощью которого вы усвоите все необходимые вам навыки для использования Selenium Webdriver.

    Также в курсе вы увидите как использовать популярный и удобный фреймворк JUnit, поймете назначение паттерна Page Object, будуете использовать язык Xpath и поддерживать собственный проект, ипользуя Java.

    Комментарии

    Только зарегистрированные пользователи могут комментировать️

    Похожие курсы

    [Книга + Видео] Путеводитель по Selenium (Java + Python)

    The Selenium Guidebook (The Complete Package Java + Python Edition)

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


    03:15:47


    20 уроков


    English

    Премиум

    [Книга + Видео] Путеводитель по Selenium (Java + Python)

    Голосов:

    14 | 14/0

    Дата добавления:

    12/02/2020

    Selenium WebDriver с Java

    Selenium WebDriver With Java

    Научитесь автоматизировать веб-приложения с помощью Selenium WebDriver с Java. Selenium WebDriver является инструментом веб-автоматизации. Навыки Selenium WebDriver востребованы. И когда вы поймете шаблоны использования Selenium WebDriver, которым обучает этот курс, вы сможете расширить свои возможности по написанию эффективного кода автоматизации.


    21:04:12


    290 уроков


    English

    Премиум

    Selenium WebDriver с Java

    Голосов:

    19 | 17/2

    Дата добавления:

    10/11/2019

    Selenium WebDriver с Java для начинающих

    Selenium WebDriver with Java for beginners

    Selenium WebDriver с Java и TestNG. Учебное пособие для начинающих в области тестирования и автоматизации Selenium.


    06:22:28


    42 уроков


    English

    Премиум

    Selenium WebDriver с Java для начинающих

    Голосов:

    17 | 15/2

    Дата добавления:

    02/09/2019

    Дата выхода:

    13/06/2019

    Web Testing automation on Java

    Web Testing automation on Java

    Автоматизация тестирования позволяет сильно упростить процессы и дает ряд преимуществ, среди которых можно выделить повышение скорости тестирования, уменьшение затрат на поддержку, автоматическую генерацию отчетов, масштабируемость.
    Курс «Web Testing automation on Java» поможет вам сформировать базовые знания для уверенного старта в этой сфере. Курс объединяет в себе теорию и практику. Вы познакомитесь с основными библиотеками и…


    06:32:03


    7 уроков


    Русский

    Премиум

    Web Testing automation on Java

    Голосов:

    27 | 23/4

    Дата добавления:

    24/08/2019

    Selenium WebDriver с Java — от основ до про + фреймворки

    Selenium WebDriver with Java -Basics to Advanced+Frameworks

    «ЛУЧШИЙ РЕЙТИНГ (ЛУЧШИЙ ПРОДАВЕЦ) # 1 Мастер-курс SELENIUM по Java» — 3 миллиона студентов, изучающих Selenium прошли этот курс.


    51:04:48


    274 уроков


    English

    Премиум

    Selenium WebDriver с Java — от основ до про + фреймворки

    Дата добавления:

    06/08/2019

    Дата выхода:

    01/08/2019

    Selenium WebDriver: полное руководство

    Описание

    Тренер: Баранцев Алексей, участник команды разработки инструмента Selenium

    Если Вы попали на эту страницу — значит, нет смысла рассказывать Вам про популярность Selenium и убеждать в необходимости его изучения, Вы это и так уже понимаете. Вопрос не в том, изучать или нет, а в том, как именно изучать.

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

    1. Selenium во главе угла

    Достаточно часто можно встретить “тренинги по Selenium”, программа которых содержит всё, что пришло в голову автору учебного курса — основы программирования, XML, SQL, JUnit, Maven, Jenkins, Git, ну и немного про Selenium.

    Это, конечно, выглядит привлекательно — на одном тренинге выучить сразу всё. Но в итоге получается в точности наоборот — ни одна из тем не покрывается достаточно полно.

    В нашем тренинге главным будет Selenium.

    Это не означает, что смежные темы совсем не будут рассматриваться. Целое занятие будет посвящено настройке инфраструктуры. Говоря о поиске элементов, нельзя обойти стороной XPath и CSS. При обсуждении способов запуска тестов попутно поговорим про Docker. Разговор о шаблоне проектирования PageObject и его альтернативах тесно связан с вопросом о том, как вообще строить архитектуру тестов.

    Но про Selenium мы расскажем всё и с подробностями, а всё остальное — по касательной, со ссылками для дальнейшего самостоятельного изучения.

    2. Полнота материала

    Ни на каком другом тренинге и ни в одной книге Вы не найдёте более полной информации о Selenium 3.0.

    Если найдёте — мы Вам дадим скидку 50% на этот учебный курс 🙂

    3. Мультиязычность

    Основные принципы и приёмы использования Selenium, рассматриваемые в тренинге, будут сопровождаться примерами на пяти языках, которые “официально” поддерживаются разработчиками Selenium: Java, C#, Python, Ruby, JavaScript.

    Selenium это языковонезависимый стандарт, описывающий набор команд для управления браузером. Реализации этого стандарта для разных языков программирования похожи друг на друга, и это неудивительно — они реализуют один и тот же набор команд.

    Вместе с тем, особенности каждого языка, его стиль, накладывают отпечаток на реализацию Selenium для этого языка. Поэтому в тренинге будут специальные модули, посвящённые именно таким особенностям.

    Даже если какой-то язык для вас “неродной” — мы всё равно рекомендуем смотреть “чужие” модули. Может быть после этого вы решите сменить язык 🙂

    4. Selenide, Protractor, PageObjects и другие модные темы

    Отдельное занятие будет посвящено разнообразным надстройкам над Selenium.

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

    Каждая надстройка добавляет что-то к функциональности Selenium, поэтому их удобно рассматривать не как самостоятельные инструменты, а именно в сравнении с Selenium — чем именно каждая из них отличается от общего “базиса”.

    Подробную программу курса смотрите чуть ниже.

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

    Это курс для тех, кто умеет программировать. Если не умеете — тогда посмотрите наши тренинги “Программирование для тестировщиков”, есть версии для Java, C# и Python. Впрочем, можно пройти любой другой тренинг или научиться программировать самостоятельно. Если не хотите учиться программировать — обратите внимание на курс “Selenium: стартовый уровень”, в нём рассматривается инструмент Selenium IDE, который не требует умения писать код.

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

    Необходимо понимать, как работает браузер. Слова HTML, CSS, JavaScript, DOM, HTTP не должны звучать как незнакомая и непонятная абракадабра.

    Нужно будет выполнять домашние задания. Для успешного применения инструмента недостаточно получить информацию о нём, нужно выработать навыки. Это происходит только путём тренировки, самостоятельного решения сначала простых, а потом более сложных задач. Выполнение домашних заданий потребует в среднем около 4 часов в неделю. Смотреть лекции недостаточно. Придётся работать руками и головой. Будьте готовы к этому.

    Подробная программа курса

    1. Общая информация

    • Что такое Selenium
    • Краткая история развития
    • Принцип работы Selenium WebDriver
    • Стандарт W3C WebDriver
    • Сравнение с конкурентами
    • Источники информации

    2. Первые шаги: пробежимся по верхам

    • Необходимая инфраструктура
    • Подготовка инфраструктуры для Java, C#, Python, Ruby, JavaScript
    • Запуск и останов браузера
    • Открытие страниц и ожидание загрузки страницы
    • Поиск элементов на странице
    • Действия: click и sendKeys
    • Свойства элементов: getText и getAttribute

    3. Запуск браузеров

    • Исполняемые файлы-посредники
    • Выбор «правильной» версии браузера
    • Особенности запуска на разных операционных системах
    • Capabilities
    • Cookies, чистый и грязный запуск
    • Подробнее про каждый браузер (Chrome, Firefox, Internet Explorer, Edge, Safari, другие)
    • Работа с несколькими браузерами одновременно
    • WebDriverFactory

    4. Поиск элементов

    • Типы локаторов
    • Какие локаторы лучше всех?
    • Отладка локаторов
    • Надёжные и ненадёжные локаторы
    • Списки элементов
    • Поиск внутри элемента
    • Неявные ожидания
    • Стратегии ожидания загрузки страницы
    • Поиск при помощи executeScript

    5. Получение свойств элементов

    • Атрибуты и свойства
    • Текст
    • Видимость
    • Размер и положение
    • Стили

    6. Действия с элементами

    • Простые
      • click
      • sendKeys
      • clear
      • submit
    • Сложные
      • Наведение мыши
      • Перетаскивание
      • Правая кнопка мыши
      • Управление по координатам
      • Модификаторы (ctrl, shift)

    7. Ожидания (WebDriverWait)

    • Ожидание появления
    • Ожидание видимости
    • Ожидание исчезновения
    • Ожидание свойств элемента
    • Ожидание нужного количества элементов
    • Произвольные условия ожидания
    • StaleElementReferenceException и борьба с ним
    • Неудачные попытки как альтернатива ожиданиям

    8. Окна и диалоги

    • Alerts
    • Uploading files
    • Downloading files
    • Окна и вкладки
    • Фреймы

    9. Удалённый запуск

    • Selenium Server
    • Selenium Grid
    • Selenium Grid Extras
    • Облачные сервисы

    10. Протоколирование

    • EventFiringWebDriver
    • Доступ к логам браузера
    • Снятие скриншотов
    • Запись видео
    • Запись трафика

    11. PageObjects и другие шаблоны проектирования

    • Откуда “ноги растут” у этого шаблона проектирования?
    • Разделение зон ответственности в тестах
    • Различные реализации PageObjects
    • Альтернативные шаблоны проектирования (PageBocks, Services)

    12. Расширения и обёртки

    • Драйверы (Appium, Winium, Windows Application Driver)
    • Альтернативные API (Watir, Selenide, FluentSelenium)
    • BDD и другие альтернативные стили (RobotFramework, Serenity, Capybara, Geb, ScalaTest)

    Отзывы

    Шмыга Алексей

    Очень понравился курс! Действительно очень полная информация и хорошая ее подача. Хоть я и имею не малый опыт в автоматизации все равно нашел для себя много интересного. Курс однозначно стоит своих денег. Так же отдельно хотелось бы отметить подачу материала — пройдя множество различных курсов и тренингов (не только по автоматизации) могу смело заявить что Алексей один из лучших преподавателей материала. Рассказывает очень понятно, хорошо систематизирует информацию и всегда дает хорошие ответы на вопросы. Из того что можно было бы улучшить это наверное домашние задания — было бы хорошо сделать каждое задание меньше в объеме и увеличить охват материала прошедшей лекции (например после лекции локаторов давать задание на все типы локаторов(именно что бы человек должен был использовать каждый тип) но что бы написать их нужно было скажем для одной страницы), это задание можно разбить на несколько (задание на xpath, отдельно на css, еще одно на id-name-class…) Не у всех хватает после работы времени на выполнение длинного задания и человек начинает отставать из-за нехватки времени. Если бы задания были меньше в объеме то можно было бы их выполнять каждый день и по немногу. Однако так же подчеркну что в текущем виде домашние задания все равно хороши — они соответствуют уровню подаваемого материала и заставляют думать что есть хорошо для усвоения материала 🙂 Еще раз спасибо!

    Голубков Александр

    Курс оказался полезнее, чем я ожидал.

    Как и многие, мои коллеги, оставившие отзывы выше, я не ждал от курса сюрпризов, принимая во внимание ранее изученный курс «Разработка тестов на JAVA с использованием Selenium 2.0» и постоянную практику использования этого инструмента.

    Однако курс оказался довольно насыщенным и (местами) напряженным. Довольно много свежей информации, нюансов, секретов.

    Информация отлично структурирована и удобна для освоения. Всегда можно пересмотреть нужный кусок лекции, если о чем-то забыл.

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

    Занятия два раза в неделю отлично держат в тонусе, хотя бывает тяжело совмещать с работой.

    В плане улучшений, возможно имеет смысл (особенно для людей слабо владеющих языками программирования) давать в СДО наименования разделов, рекомендуемых к обучению (например — Списки, Множества, Массивы и т.д.).

    В Скайп-чате много вопросов по реализации на языке программирования тех или иных подходов, продемонстрированных в лекции.

    Курс позволяет с первых лекций начать применять Selenium в работе, что очень и очень важно!

    Спасибо!

    Oleksandra Huzenko, Exigen Services, QA

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

    Второй момент. Гораздо лучше, что тренинг выкладывался по два занятия в неделю. По небольшим кускам гораздо легче (ИМХО) осваивать материал.

    Посмотреть все отзывы

     

    Все события — Selenium WebDriver: полное руководство

    Описание

    Тренер: Баранцев Алексей, участник команды разработки инструмента Selenium

    Если Вы попали на эту страницу — значит, нет смысла рассказывать Вам про популярность Selenium и убеждать в необходимости его изучения, Вы это и так уже понимаете. Вопрос не в том, изучать или нет, а в том, как именно изучать.

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

    1. Selenium во главе угла

    Достаточно часто можно встретить “тренинги по Selenium”, программа которых содержит всё, что пришло в голову автору учебного курса — основы программирования, XML, SQL, JUnit, Maven, Jenkins, Git, ну и немного про Selenium.

    Это, конечно, выглядит привлекательно — на одном тренинге выучить сразу всё. Но в итоге получается в точности наоборот — ни одна из тем не покрывается достаточно полно.

    В нашем тренинге главным будет Selenium.

    Это не означает, что смежные темы совсем не будут рассматриваться. Целое занятие будет посвящено настройке инфраструктуры. Говоря о поиске элементов, нельзя обойти стороной XPath и CSS. При обсуждении способов запуска тестов попутно поговорим про Docker. Разговор о шаблоне проектирования PageObject и его альтернативах тесно связан с вопросом о том, как вообще строить архитектуру тестов.

    Но про Selenium мы расскажем всё и с подробностями, а всё остальное — по касательной, со ссылками для дальнейшего самостоятельного изучения.

    2. Полнота материала

    Ни на каком другом тренинге и ни в одной книге Вы не найдёте более полной информации о Selenium 3.0.

    Если найдёте — мы Вам дадим скидку 50% на этот учебный курс 🙂

    3. Мультиязычность

    Основные принципы и приёмы использования Selenium, рассматриваемые в тренинге, будут сопровождаться примерами на пяти языках, которые “официально” поддерживаются разработчиками Selenium: Java, C#, Python, Ruby, JavaScript.

    Selenium это языковонезависимый стандарт, описывающий набор команд для управления браузером. Реализации этого стандарта для разных языков программирования похожи друг на друга, и это неудивительно — они реализуют один и тот же набор команд.

    Вместе с тем, особенности каждого языка, его стиль, накладывают отпечаток на реализацию Selenium для этого языка. Поэтому в тренинге будут специальные модули, посвящённые именно таким особенностям.

    Даже если какой-то язык для вас “неродной” — мы всё равно рекомендуем смотреть “чужие” модули. Может быть после этого вы решите сменить язык 🙂

    4. Selenide, Protractor, PageObjects и другие модные темы

    Отдельное занятие будет посвящено разнообразным надстройкам над Selenium.

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

    Каждая надстройка добавляет что-то к функциональности Selenium, поэтому их удобно рассматривать не как самостоятельные инструменты, а именно в сравнении с Selenium — чем именно каждая из них отличается от общего “базиса”.

    Подробную программу курса смотрите чуть ниже.

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

    Это курс для тех, кто умеет программировать. Если не умеете — тогда посмотрите наши тренинги “Программирование для тестировщиков”, есть версии для Java, C# и Python. Впрочем, можно пройти любой другой тренинг или научиться программировать самостоятельно. Если не хотите учиться программировать — обратите внимание на курс “Selenium: стартовый уровень”, в нём рассматривается инструмент Selenium IDE, который не требует умения писать код.

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

    Необходимо понимать, как работает браузер. Слова HTML, CSS, JavaScript, DOM, HTTP не должны звучать как незнакомая и непонятная абракадабра.

    Нужно будет выполнять домашние задания. Для успешного применения инструмента недостаточно получить информацию о нём, нужно выработать навыки. Это происходит только путём тренировки, самостоятельного решения сначала простых, а потом более сложных задач. Выполнение домашних заданий потребует в среднем около 4 часов в неделю. Смотреть лекции недостаточно. Придётся работать руками и головой. Будьте готовы к этому.

    Подробная программа курса

    1. Общая информация

    • Что такое Selenium
    • Краткая история развития
    • Принцип работы Selenium WebDriver
    • Стандарт W3C WebDriver
    • Сравнение с конкурентами
    • Источники информации

    2. Первые шаги: пробежимся по верхам

    • Необходимая инфраструктура
    • Подготовка инфраструктуры для Java, C#, Python, Ruby, JavaScript
    • Запуск и останов браузера
    • Открытие страниц и ожидание загрузки страницы
    • Поиск элементов на странице
    • Действия: click и sendKeys
    • Свойства элементов: getText и getAttribute

    3. Запуск браузеров

    • Исполняемые файлы-посредники
    • Выбор «правильной» версии браузера
    • Особенности запуска на разных операционных системах
    • Capabilities
    • Cookies, чистый и грязный запуск
    • Подробнее про каждый браузер (Chrome, Firefox, Internet Explorer, Edge, Safari, другие)
    • Работа с несколькими браузерами одновременно
    • WebDriverFactory

    4. Поиск элементов

    • Типы локаторов
    • Какие локаторы лучше всех?
    • Отладка локаторов
    • Надёжные и ненадёжные локаторы
    • Списки элементов
    • Поиск внутри элемента
    • Неявные ожидания
    • Стратегии ожидания загрузки страницы
    • Поиск при помощи executeScript

    5. Получение свойств элементов

    • Атрибуты и свойства
    • Текст
    • Видимость
    • Размер и положение
    • Стили

    6. Действия с элементами

    • Простые
      • click
      • sendKeys
      • clear
      • submit
    • Сложные
      • Наведение мыши
      • Перетаскивание
      • Правая кнопка мыши
      • Управление по координатам
      • Модификаторы (ctrl, shift)

    7. Ожидания (WebDriverWait)

    • Ожидание появления
    • Ожидание видимости
    • Ожидание исчезновения
    • Ожидание свойств элемента
    • Ожидание нужного количества элементов
    • Произвольные условия ожидания
    • StaleElementReferenceException и борьба с ним
    • Неудачные попытки как альтернатива ожиданиям

    8. Окна и диалоги

    • Alerts
    • Uploading files
    • Downloading files
    • Окна и вкладки
    • Фреймы

    9. Удалённый запуск

    • Selenium Server
    • Selenium Grid
    • Selenium Grid Extras
    • Облачные сервисы

    10. Протоколирование

    • EventFiringWebDriver
    • Доступ к логам браузера
    • Снятие скриншотов
    • Запись видео
    • Запись трафика

    11. PageObjects и другие шаблоны проектирования

    • Откуда “ноги растут” у этого шаблона проектирования?
    • Разделение зон ответственности в тестах
    • Различные реализации PageObjects
    • Альтернативные шаблоны проектирования (PageBocks, Services)

    12. Расширения и обёртки

    • Драйверы (Appium, Winium, Windows Application Driver)
    • Альтернативные API (Watir, Selenide, FluentSelenium)
    • BDD и другие альтернативные стили (RobotFramework, Serenity, Capybara, Geb, ScalaTest)

    Отзывы

    Шмыга Алексей

    Очень понравился курс! Действительно очень полная информация и хорошая ее подача. Хоть я и имею не малый опыт в автоматизации все равно нашел для себя много интересного. Курс однозначно стоит своих денег. Так же отдельно хотелось бы отметить подачу материала — пройдя множество различных курсов и тренингов (не только по автоматизации) могу смело заявить что Алексей один из лучших преподавателей материала. Рассказывает очень понятно, хорошо систематизирует информацию и всегда дает хорошие ответы на вопросы. Из того что можно было бы улучшить это наверное домашние задания — было бы хорошо сделать каждое задание меньше в объеме и увеличить охват материала прошедшей лекции (например после лекции локаторов давать задание на все типы локаторов(именно что бы человек должен был использовать каждый тип) но что бы написать их нужно было скажем для одной страницы), это задание можно разбить на несколько (задание на xpath, отдельно на css, еще одно на id-name-class…) Не у всех хватает после работы времени на выполнение длинного задания и человек начинает отставать из-за нехватки времени. Если бы задания были меньше в объеме то можно было бы их выполнять каждый день и по немногу. Однако так же подчеркну что в текущем виде домашние задания все равно хороши — они соответствуют уровню подаваемого материала и заставляют думать что есть хорошо для усвоения материала 🙂 Еще раз спасибо!

    Голубков Александр

    Курс оказался полезнее, чем я ожидал.

    Как и многие, мои коллеги, оставившие отзывы выше, я не ждал от курса сюрпризов, принимая во внимание ранее изученный курс «Разработка тестов на JAVA с использованием Selenium 2.0» и постоянную практику использования этого инструмента.

    Однако курс оказался довольно насыщенным и (местами) напряженным. Довольно много свежей информации, нюансов, секретов.

    Информация отлично структурирована и удобна для освоения. Всегда можно пересмотреть нужный кусок лекции, если о чем-то забыл.

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

    Занятия два раза в неделю отлично держат в тонусе, хотя бывает тяжело совмещать с работой.

    В плане улучшений, возможно имеет смысл (особенно для людей слабо владеющих языками программирования) давать в СДО наименования разделов, рекомендуемых к обучению (например — Списки, Множества, Массивы и т.д.).

    В Скайп-чате много вопросов по реализации на языке программирования тех или иных подходов, продемонстрированных в лекции.

    Курс позволяет с первых лекций начать применять Selenium в работе, что очень и очень важно!

    Спасибо!

    Oleksandra Huzenko, Exigen Services, QA

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

    Второй момент. Гораздо лучше, что тренинг выкладывался по два занятия в неделю. По небольшим кускам гораздо легче (ИМХО) осваивать материал.

    Посмотреть все отзывы

     

    Selenium для Python. Глава 3. Навигация / Хабр

    Продолжение перевода неофициальной документации Selenium для Python.
    Перевод сделан с разрешения автора Baiju Muthukadan.
    Оригинал можно найти здесь.

    Содержание:

    1. Установка
    2. Первые Шаги
    3. Навигация
    4. Поиск Элементов
    5. Ожидания
    6. Объекты Страницы
    7. WebDriver API
    8. Приложение: Часто Задаваемые Вопросы

    Предположительно, первое, что вы захотите сделать с помощью WebDriver, будет переход по ссылке. Обычно для таких целей используют метод get:

    driver.get("http://www.google.com")
    

    Метод driver.get перенаправляет к странице URL, поданной в параметре. WebDriver будет ждать пока страница не загрузится полностью (то есть, событие “onload” игнорируется), прежде чем передать контроль вашему тесту или скрипту. Стоит отметить, что если страница использует много AJAX-кода при загрузке, то WebDriver может не распознать, загрузилась ли она полностью. Если необходимо гарантировать полную загрузку страниц, вы можете использовать ожидания (англ. waits).

    3.1. Взаимодействие со страницей

    Сама по себе возможность переходить по ссылке не так уж полезна. Что действительно хочется сделать, так это взаимодействовать со страницей, или, если быть точным, с элементами HTML на странице. Прежде всего необходимо найти их. WebDriver предоставляет ряд способов для поиска элементов. К примеру, на странице есть элемент, определенный таким образом:

    <input type="text" name="passwd" />
    

    Его можно найти, используя любой из следующих методов:

    element = driver.find_element_by_id("passwd-id")
    element = driver.find_element_by_name("passwd")
    element = driver.find_element_by_xpath("//input[@id='passwd-id']")
    

    Также вы можете искать адрес гиперссылки по тексту гиперссылки, но будьте бдительны: текст должен совпадать в точности. Также будьте внимательны при использовании XPATH в WebDriver. Если существует больше одного элемента, удовлетворяющего условиям запроса, вернется только первый найденный. Если ничего не будет найдено, будет возбуждено исключение NoSuchElementException.

    WebDriver имеет “Объекто-ориентированное” API [Интерфейс прикладного программирования (c англ. application programming interface) — набор готовых методов и свойств, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. API позволяет пользоваться функционалом исходного приложения (библиотеки, сервиса), не вникая в тонкости реализации этого функционала. — Прим. пер.]; мы представляем все типы элементов используя один и тот же интерфейс. Это означает, что хоть вы и видите множество доступных методов, которые можно выбрать при нажатии комбинации клавиш автозаполнения в вашем IDE [Интегрированная среда разработки (англ. Integrated Development Environment) — система программных средств, используемая программистами для разработки программного обеспечения. — Прим. пер.], не все из них будут иметь для вас смысл или не все будут действующими. Не беспокойтесь! WebDriver попытается все исправить, так что если вы вызовете метод, используя его неправильно (например, используете “setSelected()” для “мета” тэга [Мета-теги (англ. meta tags) — HTML-теги, предназначенные для предоставления структурированных метаданных о веб-странице. Как правило, указываются в заголовке HTML-документа. — Прим. пер.]), WebDriver возбудит исключение.

    Итак, мы получили элемент. Что вы можете с ним сделать? Первым делом вы захотите ввести какой-нибудь текст в текстовое поле:

    element.send_keys("some text")
    

    Также вы можете имитировать нажатие клавиш-стрелок клавиатуры с помощью класса “Keys”:

    element.send_keys(" and some", Keys.ARROW_DOWN)
    

    Метод send_keys можно вызвать для любого элемента, который позволяет проверить сочетания клавиш, такие как те, что используются в GMail. Существует побочный эффект, заключающийся в том, что ввод в текстовое поле не очищает его автоматически. Вместо этого то, что вы набираете на клавиатуре, будет дописываться к уже вписанному в поле. Очистить содержимое тектового поля или текстовой области textarea легко — с помощью метода clear:

    element.clear()
    

    3.2. Заполнение форм

    Мы уже рассмотрели ввод текста в текстовую область или текстовое поле, а как быть с другими элементами? Вы можете попробовать раскрыть раскрывающийся список, после чего можно использовать “setSelected” для выделения тэгов вроде OPTION. Работать с тэгами SELECT не так уж сложно:

    element = driver.find_element_by_xpath("//select[@name='name']")
    all_options = element.find_elements_by_tag_name("option")
    for option in all_options:
        print("Value is: %s" % option.get_attribute("value"))
        option.click()
    

    Такой код найдет первый элемент “SELECT” на странице, и в цикле пройдет по всем тэгам OPTION поочередно, сообщая их значения и поочередно выделяя их.

    Как можно заметить, это не самый быстрый способ работы с элементами SELECT. Поддерживаемые вебдрайвером классы содержат один, называющийся “Select”, он предоставляет более удобные способы взаимодействия:

    from selenium.webdriver.support.ui import Select
    select = Select(driver.find_element_by_name('name'))
    select.select_by_index(index)
    select.select_by_visible_text("text")
    select.select_by_value(value)
    

    Также WebDriver предоставляет возможность снятия выделения со всех элементов выпадающего списка:

    select = Select(driver.find_element_by_id('id'))
    select.deselect_all()
    

    Этот код снимает выделение со всех тегов OPTION первого тега SELECT на странице.

    Допустим, для теста вам необходим список всех выделенных по умолчанию опций. Класс Select предоставляет такое свойство (возвращает список):

    select = Select(driver.find_element_by_xpath("xpath"))
    all_selected_options = select.all_selected_options
    

    Для получения всех доступных опций используйте:

    options = select.options
    

    После того как с заполнением формы будет покончено, вы, вероятно, захотите “сохранить” изменения [submit — отправить, передать, подтвердить — Прим. пер.]. Одним из способов сделать это — найти кнопку “submit” и кликнуть по ней:

    # Предположим, ID кнопки равен "submit" :)
    driver.find_element_by_id("submit").click()
    

    В качестве альтернативы первому методу можно использовать метод “submit”, доступный для каждого элемента. Если вызвать его для элемента внутри формы, WebDriver пробежится по всей структуре DOM, пока не найдет закрывающийся тег формы, и затем вызовет для нее submit. Если элемент находится не в форме, тогда возбудится исключение NoSuchElementException:

    element.submit()
    

    3.3. Перетаскивание

    Есть два варианта «перетаскивания» элементов: перемещение элемента на определенную величину, либо перетаскивание его на другой элемент:

    element = driver.find_element_by_name("source")
    target = driver.find_element_by_name("target")
    
    from selenium.webdriver import ActionChains
    action_chains = ActionChains(driver)
    action_chains.drag_and_drop(element, target)
    

    3.4. Переключение между окнами и фрэймами

    Современные веб-приложения редко обходятся без фреймов (frame) и редко когда ограничиваются одним окном. WebDriver поддерживает переключение между именованными окнами с помощью метода “switch_to_window”:

    driver.switch_to_window("windowName")
    

    Все вызовы, начинающиеся с driver теперь будут истолкованы как обращенные к полученному окну. Но откуда вам знать имя окна? Взгляните на код javascript или ссылку, которые открывают окно:

    <a href="кое_где.html" target="имяОкна">Нажмите сюда, чтобы открыть новое окно</a>
    

    Также вы можете послать “дескриптор окна” методу “switch_to_window()”. Пользуясь этой особенностью, вы можете использовать цикл для перебора всех открытых окон, к примеру, так:

    for handle in driver.window_handles:
        driver.switch_to_window(handle)
    

    Еще вы можете переходить между фрэймами (frame или iframes):

    driver.switch_to_frame("frameName")
    

    Можно получить доступ к подчиненным фреймам, подавая путь, разделяемый точкой, или можно получить фрейм по индексу:

    driver.switch_to_frame("frameName.0.child")
    

    Следующий код перенаправит к фрейму с именем “child”, который в свою очередь принадлежит первому подчиненному фрейму фрейма “frameName”. Пути к фреймам описываются полностью — от верхнего уровня:

    driver.switch_to_frame("frameName.0.child")
    

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

    driver.switch_to_default_content()
    

    3.5. Всплывающие окна

    Selenium WebDriver из упаковки поддерживает управление всплывающими диалоговыми окнами. После того как вы инициируете запуск, откроется окно, управлять им можно так:

    alert = driver.switch_to_alert()
    

    Код вернет объект текущего открытого окна. С этим объектом вы можете принять, отклонить вопрос окна, прочитать его содержимое или даже ввести текст по приглашению окна. Интерфейс взаимодействия со всплывающими окнами работает одинаково хорошо как для предупреждений (alerts), так и для запросов к подтверждению (confirms) и приглашений к вводу (prompts). За дополнительной информацией обратитесь к документации API.

    3.6. Навигация: история и локация

    Чуть раньше мы упомянули о навигации по ссылке с ипользованием комманды “get” ( driver.get(«www.example.com») ). Как вы уже могли заметить, WebDriver для отдельных случаев предоставляет узконаправленные, специализированные интерфейсы взаимодействия, и навигация не исключение. Чтобы перейти по ссылке, вы можете воспользоваться методом get:

    driver.get("http://www.example.com")
    

    Чтобы перейти вперед или назад по истории вкладки:

    driver.forward()
    driver.back()
    

    Имейте в виду, что этот функционал полностью зависит от используемого драйвера. Вы можете получить непредвиденный результат, если привыкли к поведению какого-либо конкретного браузера, а работаете с другим.

    3.7. Куки (cookies)

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

    # Перейти на необходимый домен
    driver.get("http://www.example.com")
    
    # Установить куки. Следующий cookie действителен для всего домена
    cookie = {"ключ": "значение"}
    driver.add_cookie(cookie)
    
    # И теперь получим все доступные куки для текущего адреса URL
    all_cookies = driver.get_cookies()
    for cookie_name, cookie_value in all_cookies.items():
        print("%s -> %s", cookie_name, cookie_value)
    

    Перейти к следующей главе

    Selenium для Python. Глава 4. Поиск элементов / Хабр

    Продолжение перевода неофициальной документации Selenium для Python.
    Перевод сделан с разрешения автора Baiju Muthukadan.
    Оригинал можно найти здесь.

    Содержание:

    1. Установка
    2. Первые Шаги
    3. Навигация
    4. Поиск Элементов
    5. Ожидания
    6. Объекты Страницы
    7. WebDriver API
    8. Приложение: Часто Задаваемые Вопросы

    Существует ряд способов поиска элементов на странице. Вы вправе использовать наиболее уместные для конкретных задач. Selenium предоставляет следующие методы поиска элементов на странице:

    • find_element_by_id
    • find_element_by_name
    • find_element_by_xpath
    • find_element_by_link_text
    • find_element_by_partial_link_text
    • find_element_by_tag_name
    • find_element_by_class_name
    • find_element_by_css_selector

    Чтобы найти все элементы, удовлетворяющие условию поиска, используйте следующие методы (возвращается список):

    • find_elements_by_name
    • find_elements_by_xpath
    • find_elements_by_link_text
    • find_elements_by_partial_link_text
    • find_elements_by_tag_name
    • find_elements_by_class_name
    • find_elements_by_css_selector

    [Как вы могли заметить, во втором списке отсутствует поиск по id. Это обуславливается особенностью свойства id для элементов HTML: идентификаторы элементов страницы всегда уникальны. — Прим. пер.]

    Помимо общедоступных (public) методов, перечисленных выше, существует два приватных (private) метода, которые при знании указателей объектов страницы могут быть очень полезны: find_element and find_elements.

    Пример использования:

    from selenium.webdriver.common.by import By
    
    driver.find_element(By.XPATH, '//button[text()="Some text"]')
    driver.find_elements(By.XPATH, '//button')
    

    Для класса By доступны следующие атрибуты:

    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"
    

    4.1. Поиск по Id

    Используйте этот способ, когда известен id элемента. Если ни один элемент не удовлетворяет заданному значению id, будет вызвано исключение NoSuchElementException.

    Для примера, рассмотрим следующий исходный код страницы:

    <html>
     <body>
      <form>
       <input name="username" type="text" />
       <input name="password" type="password" />
       <input name="continue" type="submit" value="Login" />
      </form>
     </body>
    <html>
    

    Элемент form может быть определен следующим образом:

    login_form = driver.find_element_by_id('loginForm')
    

    4.2. Поиск по Name

    Используйте этот способ, когда известен атрибут name элемента. Результатом будет первый элемент с искомым значением атрибута name. Если ни один элемент не удовлетворяет заданному значению name, будет вызвано исключение NoSuchElementException.

    Для примера, рассмотрим следующий исходный код страницы:

    <html>
     <body>
      <form>
       <input name="username" type="text" />
       <input name="password" type="password" />
       <input name="continue" type="submit" value="Login" />
       <input name="continue" type="button" value="Clear" />
      </form>
    </body>
    <html>
    

    Элементы с именами username и password могут быть определены следующим образом:

    username = driver.find_element_by_name('username')
    password = driver.find_element_by_name('password')
    

    Следующий код получит кнопку “Login”, находящуюся перед кнопкой “Clear”:

    continue = driver.find_element_by_name('continue')
    

    4.3. Поиск по XPath

    XPath – это язык, использующийся для поиска узлов дерева XML-документа. Поскольку в основе HTML может лежать структура XML (XHTML), пользователям Selenium предоставляется возможность посредоством этого мощного языка отыскивать элементы в их веб-приложениях. XPath выходит за рамки простых методов поиска по атрибутам id или name (и в то же время поддерживает их), и открывает спектр новых возможностей, таких как поиск третьего чекбокса (checkbox) на странице, к примеру.

    Одно из веских оснований использовать XPath заключено в наличии ситуаций, когда вы не можете похвастать пригодными в качестве указателей атрибутами, такими как id или name, для элемента, который вы хотите получить. Вы можете использовать XPath для поиска элемента как по абсолютному пути (не рекомендуется), так и по относительному (для элементов с заданными id или name). XPath указатели в том числе могут быть использованы для определения элементов с помощью атрибутов отличных от id и name.

    Абсолютный путь XPath содержит в себе все узлы дерева от корня (html) до необходимого элемента, и, как следствие, подвержен ошибкам в результате малейших корректировок исходного кода страницы. Если найти ближайщий элемент с атрибутами id или name (в идеале один из элементов-родителей), можно определить искомый элемент, используя связь «родитель-подчиненный». Эти связи будут куда стабильнее и сделают ваши тесты устойчивыми к изменениям в исходном коде страницы.

    Для примера, рассмотрим следующий исходный код страницы:

    <html>
     <body>
      <form>
       <input name="username" type="text" />
       <input name="password" type="password" />
       <input name="continue" type="submit" value="Login" />
       <input name="continue" type="button" value="Clear" />
      </form>
    </body>
    <html>
    

    Элемент form может быть определен следующими способами:

    login_form = driver.find_element_by_xpath("/html/body/form[1]")
    login_form = driver.find_element_by_xpath("//form[1]")
    login_form = driver.find_element_by_xpath("//form[@id='loginForm']")
    

    1. Абсолютный путь (поломается при малейшем изменении структуры HTML страницы)
    2. Первый элемент form в странице HTML
    3. Элемент form, для которого определен атрибут с именем id и значением loginForm

    Элемент username может быть найден так:

    username = driver.find_element_by_xpath("//form[input/@name='username']")
    username = driver.find_element_by_xpath("//form[@id='loginForm']/input[1]")
    username = driver.find_element_by_xpath("//input[@name='username']")
    

    1. Первый элемент form с дочерним элементом input, для которого определен атрибут с именем name и значением username
    2. Первый дочерний элемент input элемента form, для которого определен атрибут с именем id и значением loginForm
    3. Первый элемент input, для которого определен атрибут с именем name и значением username

    Кнопка “Clear” может быть найдена следующими способами:

    clear_button = driver.find_element_by_xpath("//input[@name='continue'][@type='button']")
    clear_button = driver.find_element_by_xpath("//form[@id='loginForm']/input[4]")
    

    1. Элемент input, для которого заданы атрибут с именем name и значением continue и атрибут с именем type и значением button
    2. Четвертый дочерний элемент input элемента form, для которого задан атрибут с именем id и значением loginForm

    Представленные примеры покрывают некоторые основы использования XPath, для более углубленного изучения рекомендую следующие материалы:
    Существует также пара очень полезных дополнений (add-on), которые могут помочь в выяснении XPath элемента:

    • XPath Checker — получает пути XPath и может использоваться для проверки результатов пути XPath
    • Firebug — получение пути XPath — лишь одно из многих мощных средств, поддерживаемых этим очень полезным плагином
    • XPath Helper — для Google Chrome

    4.4. Поиск гиперссылок по тексту гиперссылки

    Используйте этот способ, когда известен текст внутри анкер-тэга [anchor tag, анкер-тэг, тег «якорь» — тэг — Прим. пер.]. С помощью такого способа вы получите первый элемент с искомым значением текста тэга. Если никакой элемент не удовлетворяет искомому значению, будет вызвано исключение NoSuchElementException.

    Для примера, рассмотрим следующий исходный код страницы:

    <html>
     <body>
      <p>Are you sure you want to do this?</p>
      <a href="continue.html">Continue</a>
      <a href="cancel.html">Cancel</a>
    </body>
    <html>
    

    Элемент-гиперссылка с адресом «continue.html» может быть получен следующим образом:

    continue_link = driver.find_element_by_link_text('Continue')
    continue_link = driver.find_element_by_partial_link_text('Conti')
    

    4.5. Поиск элементов по тэгу

    Используйте этот способ, когда вы хотите найти элемент по его тэгу. Таким способом вы получите первый элемент с указанным именем тега. Если поиск не даст результатов, будет возбуждено исключение NoSuchElementException.

    Для примера, рассмотрим следующий исходный код страницы:

    <html>
     <body>
      <h2>Welcome</h2>
      <p>Site content goes here.</p>
    </body>
    <html>
    

    Элемент заголовка h2 может быть найден следующим образом:

    heading1 = driver.find_element_by_tag_name('h2')
    

    4.6. Поиск элементов по классу

    Используйте этот способ в случаях, когда хотите найти элемент по значению атрибута class. Таким способом вы получите первый элемент с искомым именем класса. Если поиск не даст результата, будет возбуждено исключение NoSuchElementException.

    Для примера, рассмотрим следующий исходный код страницы:

    <html>
     <body>
      <p>Site content goes here.</p>
    </body>
    <html>
    

    Элемент “p” может быть найден следующим образом:

    content = driver.find_element_by_class_name('content')
    

    4.7. Поиск элементов по CSS-селектору

    Используйте этот способ, когда хотите получить элемент с использованием синтаксиса CSS-селекторов [CSS-селектор — это формальное описание относительного пути до элемента/элементов HTML. Классически, селекторы используются для задания правил стиля. В случае с WebDriver, существование самих правил не обязательно, веб-драйвер использует синтаксис CSS только для поиска — Прим. пер.]. Этим способом вы получите первый элемент удовлетворяющий CSS-селектору. Если ни один элемент не удовлетворяют селектору CSS, будет возбуждено исключение NoSuchElementException.

    Для примера, рассмотрим следующий исходный код страницы:

    <html>
     <body>
      <p>Site content goes here.</p>
    </body>
    <html>
    

    Элемент “p” может быть определен следующим образом:

    content = driver.find_element_by_css_selector('p.content')
    

    На Sauce Labs есть хорошая документация по селекторам CSS.
    От переводчика: советую также обратиться к следующим материалам:

    Перейти к следующей главе

    Изучите WebDriver за 7 дней

    • Home
    • Testing

        • Back
        • Agile Testing
        • BugZilla
        • Cucumber
        • Database Testing
            • J2000 Тестирование базы данных
            • JUnit
            • LoadRunner
            • Ручное тестирование
            • Мобильное тестирование
            • Mantis
            • Почтальон
            • QTP
            • Назад
            • Центр качества (ALM)
            • RPA 9000 Testing SAPI
            • Управление
            • TestLink
        • SAP

            • Назад
            • ABAP
            • APO
            • Начинающий
            • Basis
            • BODS
            • BI
            • BPC
            • CO
            • Назад
            • CRM
            • Crystal Reports
            • MMO
            • HANA
            • Назад
            • PI / PO
            • PP
            • SD
            • SAPUI5
            • Безопасность
            • Менеджер решений
            • Successfactors
            • SAP Tutorials

          000

        • AngularJS
        • ASP.Net
        • C
        • C #
        • C ++
        • CodeIgniter
        • СУБД
        • JavaScript
        • Назад
        • Java
        • JSP
        • Kotlin
        • Linux
        • Linux
        • Kotlin
        • Linux
        • js

        • Perl
        • Назад
        • PHP
        • PL / SQL
        • PostgreSQL
        • Python
        • ReactJS
        • Ruby & Rails
        • Scala
        • SQL
        • 000

        • SQL
        • 000

          0003 SQL

          000

          0003 SQL

          000

        • UML
        • VB.Net
        • VBScript
        • Веб-службы
        • WPF
    • Обязательно учите!

        • Назад
        • Бухгалтерский учет
        • Алгоритмы
        • Android
        • Блокчейн
        • Business Analyst
        • Создание веб-сайта
        • CCNA
        • Облачные вычисления
        • COBOL
        • 9000 Compiler

          9000

          Selenium Webdriver Tutorial — пошаговые уроки

          Прежде всего, добро пожаловать в учебную доску Selenium Webdriver!

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

          Подробнее — Учебник TestNG

          С Selenium Webdriver вы можете интегрировать множество инструментов, таких как JUnit, TestNG, AutoIT и Jenkins. В TechBeamers вы найдете отказ. руководств по Selenium Webdriver, охватывающих основы команд Selenium Webdriver, Selenium RC, Selenium IDE и Selenium Webdriver. Время от времени мы также публикуем в этом блоге расширенные руководства по Selenium Webdriver. Практически во всех обучающих материалах мы приводим рабочие примеры реальных проблем. Здесь мы собрали для вас список лучших руководств по Selenium Webdriver.

          Selenium Webdriver Tutorial.

          Мы начали эту серию руководств, чтобы помочь инженерам по обеспечению качества и автоматизации тестирования.

          Учебник 1: Изучите основы Selenium Webdriver.

          1. В этом руководстве по Selenium Webdriver вы получите учебный материал для изучения основных понятий.

          1.1- Селеновые компоненты для автоматизации тестирования.
          1.2- Визуализируйте архитектуру Selenium Webdriver.
          1.3- Какие инструменты поддерживает Selenium?

          1.3.1- Что такое Selenium RC?
          1.3.2- Что такое Selenium IDE?
          1.3.3- Что такое Selenium Webdriver?
          1.3.4-

          .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *