Пользователь
0,0
рейтинг
22 января 2015 в 15:22

Разработка → Selenium для Python. Глава 1. Установка из песочницы tutorial

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

Предисловие от автора статьи


Selenium WebDriver – это программная библиотека для управления браузерами. WebDriver представляет собой драйверы для различных браузеров и клиентские библиотеки на разных языках программирования, предназначенные для управления этими драйверами.

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

Библиотеки WebDriver доступны на языках Java, .Net (C#), Python, Ruby, JavaScript, драйверы реализованы для браузеров Firefox, InternetExplorer, Safari, Andriod, iOS (а также Chrome и Opera).

Сфера применения
Чаще всего Selenium WebDriver используется для тестирования функционала веб-сайтов/веб-ориентированных приложений. Автоматизированное тестирование удобно, потому что позволяет многократно запускать повторяющиеся тесты. Регрессионное тестирование, то есть, проверка, что старый код не перестал работать правильно после внесения новых изменений, является типичным примером, когда необходима автоматизация. WebDriver предоставляет все необходимые методы, обеспечивает высокую скорость теста и гарантирует корректность проверки (поскольку человеский фактор исключен). В официальной документации Selenium приводятся следующие плюсы автоматизированного тестирования веб-приложений:

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

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

Также одной из незаменимых особенностей Selenium WebDriver является ожидание загрузки страницы. Сюда можно отнести случаи, когда парсинг данных на странице невозможен из-за страниц перенаправления или ожидания, содержащих примерно такой текст: «Подождите, страница загружается». Такие страницы, само собой разумеется, не является целью парсинга, однако обойти их часто не представляется возможным. Естественно, без Selenium WebDriver. Selenium WebDriver позволяет в таких случаях «ожидать», как ожидал бы человек, пока на странице, к примеру, не появится элемент с необходимым именем.

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

Некоторые проблемы WebDriver (из сети и личного опыта):

  • бывает, что поведение отличается в разных браузерах;
  • иногда возникают сложности с поиском элементов (XPath и другие методы иногда просто не работают, хотя должны);
  • необъяснимые падения драйвера прямо посреди теста;
  • взаимодействие возможно только с первой вкладкой браузера, драйвер позволяет открывать новые вкладки и новые окна, но не позволяет в них работать;
  • необходимо четко продумывать архитектуру теста, часто использовать assert или ожидания, чтобы тест умел «думать», когда делать и когда нет.

Подробнее о проекте Selenium и серии их ПО можно прочитать здесь, либо в официальной документации или ее переводе.

Содержание:


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

1. Установка


1.1. Введение


Привязка Selenium к Python предоставляет собой простой API [Интерфейс программирования приложений (англ. Application Programming Interface) — Прим. пер.] для написания тестов функциональности/тестов соответствия требованиям с использованием веб-драйвера Selenium WebDriver. С помощью Selenium Python API вы можете интуитивно просто получить доступ ко всему функционалу Selenium WebDriver.

Привязка Python-Selenium предоставляет удобный API для доступа к таким веб-драйверам Selenium как Firefox, Ie, Chrome, Remote и других. На данный момент поддерживаются версии Python 2.7, 3.2, 3.3 и 3.4.

В данной документации рассмотрен Selenium 2 WebDriver API. Selenium 1 / Selenium RC API в ней не охвачены.

1.2. Загрузка Selenium для Python


Вы можете загрузить привязку Selenium к Python со страницы пакета selenium на PyPI. Однако, лучшим способом будет использование модуля pip. Python 3.4 содержит pip в стандартной библиотеке. Используя pip, вы можете установить selenium следующей командой:
pip install selenium
Для создания изолированной среды Python вы можете использовать virtualenv. Также библиотека Python 3.4 содержит модуль pyvenv, который практически аналогичен virtualenv.

1.3. Подробная инструкция для пользователей Windows


Примечание
Для данной инсталляции вам необходим доступ к сети Интернет.
1. Установите Python 3.4 через файл MSI, доступный на странице загрузок сайта python.org.
2. Запустите командную строку через программу cmd.exe и запустите команду pip установки selenium, как показано ниже.
C:\Python34\Scripts\pip.exe install selenium
Теперь вы можете запускать свои тестовые скрипты, используя Python. К примеру, если вы создали скрипт на основе Selenium и сохранили его в C:\my_selenium_script.py, то вы можете запустить его следующей командой:
C:\Python34\python.exe C:\my_selenium_script.py

1.4. Загрузка Selenium server


Примечание
Selenium server необходим в случаях, когда вы хотите использовать remote WebDriver [удаленный — Прим. пер.]. За дополнительной информацией обращайтесь к разделу Использование Selenium с remote WebDriver. Если вы только начинаете изучать Selenium, вы можете пропустить этот раздел и продолжить изучение со следующей главы.
Selenium server написан на языке Java. Для его запуска рекомендована среда Java Runtime Environment (JRE) версии 1.6 или выше.

Вы можете скачать Selenium server 2.x на странице загрузок сайта selenium. Имя файла должно выглядеть примерно таким образом: selenium-server-standalone-2.x.x.jar. Вы всегда можете загрузить последнюю версию Selenium server 2.x.

Если Java Runtime Environment (JRE) не установлена в вашей системе, вы можете скачать JRE с сайта Oracle. Если вы используете системы GNU/Linux и имеете права root [права администратора — Прим. пер.], вы так же можете установить JRE, используя инструкции вашей системы.

Если команда java доступна в PATH (переменная окружения), вы можете запустить Selenium server используя следующую команду:
java -jar selenium-server-standalone-2.x.x.jar
Замените 2.x.x актуальной версией Selenium server, скачанной вами с сайта.

Если JRE установлена под пользователем, не обладающим правами root и/или если она недоступна в переменной окружения PATH, вы можете ввести относительный или полный путь до файла java. Аналогично, вы можете дополнить имя jar-файла Selenium server до относительного или полного пути. После этого команда будет выглядеть так:
/путь/до/java -jar /путь/до/selenium-server-standalone-2.x.x.jar
Перейти к следующей главе
Егор @penguino
карма
13,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (12)

  • +1
    Жаль, что ничего не написано про ожидания (Implicit Waits/Explicit Waits).
    • 0
      Извините. Оказывается это будет в следующих главах.
  • +2
    Жаль что в начале не написано для чего он вообще нужен.
  • 0
    Подскажите, а Selenium можно использовать на сервере, где нет графической оболочки и не установлены браузеры. Если можно, то что для этого нужно?
    • +1
      Можно использовать в качестве веб драйвера — PhantomJS (http://phantomjs.org/). Конечно должен быть установлен selenium и phantomjs. И использовать так же как и с любым другим веб-драйвером.
      Например:

      from selenium import webdriver

      driver = webdriver.PhantomJS() # or add to your PATH
      driver.set_window_size(1024, 768) # optional
      driver.get('https://google.com/')
      driver.save_screenshot('screen.png') # save a screenshot to disk
      sbtn = driver.find_element_by_css_selector('button.gbqfba')
      sbtn.click()

      • 0
        Спасибо. Попробую.
      • 0
        Только phantomjs ставьте не через пакетный менеджер системы, а через npm
    • +1
      На Linux можно использовать pyvirtualdisplay (xvfb по-сути), например:
      #!/usr/bin/env python
      from pyvirtualdisplay import Display
      from selenium import webdriver
      display = Display(visible=0, size=(800, 600))
      display.start()
      wd = webdriver.Firefox()
      browser.get('http://goatse.cx')
      print browser.title
      wd.quit()
      display.stop()
      

      Соответственно, работать должно и с FF и с Chrome,
      • 0
        Да, на экране ничего не увидим.
        Но на машине должен быть установлен Firefox.
  • 0
    Поставил PhantomJS() на десктопный linux. Возникает проблема с send_keys(Keys.RETURN).
    Создается ощущение, что нажатие не происходить. Искал кнопку с помощью find_element_by_xpath и выполнял click. Аналогично.
    Завтра посмотрю ещё.
    Может какой библиотеки не хватает.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.