Селен для Python. Глава 2. Первые Шаги

Селен для Python. Глава 2. Первые Шаги

1024

Оригинал можно отыскать тут. Перевод делается с разрешения создателя Baiju Muthukadan. Продолжение перевода неформальной документации Селен для Python.
Отыскать Предметы
5. 1-ые Шаги
3. Объекты На Страничке
7. Содержание:
1. Приложение: Нередко Задаваемые Вопросцы WebDriver API
8. Ожидания
6. Установка
2. Навигация
4.
1-ые шаги
2.1. 2. Просто для использования
Раз вы установили Селена привязки для Python, вы сможете начать применять его с помощью интерпретатора Python.
от импорта Селена webdriver
от Селена.webdriver.common.ключи импортировать ключи

driver = webdriver.Firefox()
драйвера.get(«http://www.python.org»)
утверждать «Python» в драйвер.заглавие
elem = driver.find_element_by_name(«q»)
elem.send_keys(«pycon»)
elem.send_keys(Keys.Вернуть
утверждать «не найдено.» не в драйвер.page_source
драйвера.close()

Приведенный выше код может быть сохранен в файл (к примеру, python_org_search.py), и выполните команду:
python python_org_search.rsapubkey Python, должны содержать установленные Селена модуль.
На данный момент WebDriver поддерживает реализацию Firefox, Chrome, Ie и пульт. Класс ключи обеспечивает взаимодействие с клавиатуры команд, таковых как возврат, F1, ALT, etc… Пошаговое пошаговое управление
Selenium-модуль.webdriver предоставляет всю функциональность WebDriver…. 2.2.
от импорта Селена webdriver
от Селена.webdriver.common.ключи импортировать ключи

Дальше создается элемент класса Firefox WebDriver.
driver = webdriver.Firefox()

Способ драйвер.получить перенаправляет на страничку параметра URL-адреса. WebDriver будет ожидать, пока страничка на сто процентов загружена (то есть, “onload” игнорируется) перед передачей управления на тестовый либо скрипт. Следует отметить, что раз на страничке употребляется много AJAX кода при загрузке, WebDriver не может распознать, является ли оно на сто процентов загружены:
trans.]: Такое поведение дозволяет контролировать выполнение программы определенным образом. В тех вариантах, когда устное заявление не соответствует реальности, говорят, вызывает исключение. По сущности, говорят, припоминает констатация факта, расположенном в середине кода программы. драйвера.get(«http://www.python.org»)

Последующая строчка assert (). Разница говорят критерий является то, что программа с assert не будет принимать хоть какой ход событий, беря во внимание предстоящее выполнение программы либо функции имеет смысла — Прим. утверждение), что в заглавии содержится слово “Python” [assert дозволяет проверить догадки о значениях случайных данных в случайной точке программы.
К примеру, входной элемент ввода текста можно отыскать по его имени атрибута способ find_element_by_name. Подробное описание способов поиска предметов можно отыскать в главе Поиск предметов: утверждать «Python» в драйвер.заглавие

WebDriver предоставляет несколько методов получения частей с помощью способов find_element_by_*.
Особые команды могут передаваться с помощью класса, ключи импортированы из Селена.webdriver.common.ключи: elem = driver.find_element_by_name(«q»)

Опосля этого мы посылаем нажатия кнопок (к примеру, введение кнопок с клавиатуры).
Чтоб убедиться, что мы получили какой-или итог, добавьте аннотацию: elem.send_keys(«pycon»)
elem.send_keys(Keys.Вернуть

Опосля того, как вы ответите на страничке, вы получите итог, раз ожидается.
Но, в случае, когда открыта лишь одна вкладка, по умолчанию, в большинстве браузеров закрыты на сто процентов: Можно также вызвать способ quit заместо того, чтоб закрыть. утверждать «не найдено.» не в драйвер.page_source

В заключение, окно браузера закрывается. Способ quit, чтоб закрыть браузер на сто процентов, в то время как рядом будет закрыть одну вкладку.
драйвера.close()

2.3. Сам пакет Селена не предоставляет тестовые утилиты и средства разработки. В данной главе, как избранный инструмент будет употребляться unittest. Вы сможете писать испытания с внедрением Python модуль unittest. Этот скрипт тестирования функциональности поиска на веб-сайте python.org: С помощью Selenium для написания тестов
Селена почаще всего употребляется для написание тест-кейсов. Ваш иной выбор в качестве тест-сервис/средства разработки могут быть py.тест и нос. Ниже приведен модифицированный пример использования этого модуля.
———————————————————————-
Ran 1 тест в s 15.566

Kresultat выше указывает, что тест был завершен удачно. import unittest
от импорта Селена webdriver
от Селена.webdriver.common.ключи импортировать ключи

класс PythonOrgSearch(unittest.TestCase):

def setUp(self):
self.driver = webdriver.Firefox()

def test_search_in_python_org(self):
driver = self.драйвер
драйвера.get(«http://www.python.org»)
self.assertIn(«Python», шофер.заглавие)
elem = driver.find_element_by_name(«q»)
elem.send_keys(«pycon»)
утверждать «не найдено.» не в драйвер.page_source
elem.send_keys(Keys.Вернуть

def tearDown(self):
self.драйвера.close()

раз __имя__ == «__главных__»:
unittest.main()

Вы сможете запустить тест выше из командной строчки последующую команду:
python test_python_org_search.py.
2.4. Пошаговое пошаговое управление
Сначало импортированы все главные нужные модули. В unittest модуль интегрированный в Python и реализована на Java, JUnit. Этот модуль предоставляет инструмент для проведения тестов.
Selenium-модуль.webdriver предоставляет всю функциональность WebDriver…. Класс ключи обеспечивает взаимодействие с клавиатуры команд, таковых как возврат, F1, ALT, etc… На данный момент WebDriver поддерживает реализацию Firefox, Chrome, Ie и пульт.
import unittest
от импорта Селена webdriver
от Селена.webdriver.common.ключи импортировать ключи

Тест класс наследуется от unittest.TestCase. TestCase класс наследование-это метод общения модуль unittest, что этот тест:
Тут мы создаем элемент класса к Firefox WebDriver. класс PythonOrgSearch(unittest.TestCase):

установка является частью инициализации, этот способ будет вызываться перед каждым тестовым способом вы собираетесь написать снутри тестового класса.
def setUp(self):
self.driver = webdriver.Firefox()

Ниже описывается способ нашего теста. В первой строке способа делает локальную ссылку на драйвер объект, сделанный програмкой установки. Тестовый способ должен постоянно начинаться с фразы теста.
Следует отметить, что раз на страничке употребляется много AJAX кода при загрузке, WebDriver не может распознать, является ли оно на сто процентов загружены: WebDriver будет ожидать, пока страничка на сто процентов загружена (то есть, “onload” игнорируется) перед передачей управления на тестовый либо скрипт. def test_search_in_python_org(self):
driver = self.драйвер

Способ драйвер.получить перенаправляет на страничку параметра URL-адреса.
драйвера.get(«http://www.python.org»)

Последующая строчка-это заявление о том, что в заглавии содержится слово “Python”:
Подробное описание способов поиска предметов можно отыскать в главе Поиск предметов: К примеру, входной элемент ввода текста можно отыскать по его имени атрибута способ find_element_by_name. self.assertIn(«Python», шофер.заглавие)

WebDriver предоставляет несколько методов получения частей с помощью способов find_element_by_*.
Особые команды могут передаваться с помощью класса, ключи импортированы из Селена.webdriver.common.ключи: elem = driver.find_element_by_name(«q»)

Опосля этого мы посылаем нажатия кнопок (к примеру, введение кнопок с клавиатуры).
elem.send_keys(«pycon»)
elem.send_keys(Keys.Вернуть

Опосля того, как вы ответите на страничке, вы получите итог, раз ожидается. Чтоб убедиться, что мы получили какой-или итог, добавьте аннотацию:
Можно также вызвать способ quit заместо того, чтоб закрыть. Этот способ для чистки действий. В настоящее время способ реализуется методом закрытия окна браузера. Способ quit, чтоб закрыть браузер на сто процентов, в то время как рядом будет закрыть одну вкладку. Но, в случае, когда открыта лишь одна вкладка, по умолчанию, в большинстве браузеров закрыты на сто процентов.: утверждать «не найдено.» не в драйвер.page_source

Способ tearDown будет вызываться опосля каждого тестового способа.
trans.]: def tearDown(self):
self.драйвера.close()

Финишный код-это обычный вставить код для пуска тестов [сопоставление __имя__ «__главных__» значит, что модуль (программный файл) запускается как отдельная программа («главные» (Engl.) — «основной», «основной») (а не импортированные из другого модуля). Раз вы импортируете модуль, модуль атрибут __имя__ будет равна Имя файла без каталога и расширение — Прим.
раз __имя__ == «__главных__»:
unittest.main()

2.5. Ниже несколько примеров: Для пуска сервера используйте команду:
java-jar selenium-server-standalone-2.х.х.jarПока Selenium сервер запущен, вы сможете узреть сообщения, как:
15:43:07.541 INFO — RemoteWebDriver экземпляры должны подключаться к: http://127.0.0.1:4444/wd/hubСтрока выше отчетов, которые можно применять URL для подключения remote WebDriver. С помощью Selenium remote WebDriver
Для использования remote WebDriver (remote web driver), для вас необходимо для пуска Selenium server.
от Селена.webdriver.common.desired_capabilities импорта DesiredCapabilities

driver = webdriver.Удаленный(
command_executor=’http://127.0.0.1:4444/wd/hub’,
desired_capabilities=DesiredCapabilities.Хром

driver = webdriver.Удаленный(
command_executor=’http://127.0.0.1:4444/wd/hub’,
desired_capabilities=DesiredCapabilities.Опера)

driver = webdriver.Удаленный(
command_executor=’http://127.0.0.1:4444/wd/hub’,
desired_capabilities=DesiredCapabilities.HTMLUNITWITHJS)

Переменная desired_capabilities-это словарь. Заместо использования словарей по умолчанию, вы сможете очевидно задать значения:
driver = webdriver.Удаленный(
command_executor=’http://127.0.0.1:4444/wd/hub’,
desired_capabilities={‘browserName’: ‘htmlunit’,
‘version’: ‘2’,
‘javascriptEnabled’: True})

Перейти к последующей главе habrahabr.ru