У Python есть что-то вроде капибары/огурца?
Ruby имеет этот большой слой абстракции поверх Селена, называемого Capybara, который вы можете использовать для функционального/приемочного/интеграционного тестирования. Он также имеет другую библиотеку под названием Cucumber, которая делает этот шаг дальше и позволяет вам писать тесты на английском языке.
обе библиотеки построены поверх Selenium и могут использоваться для тестирования против любого крупного браузера, но из-за их слоев абстракции очень легко писать тесты с их помощью (ну, так же просто, как и функционально тестирование получает хотя бы).
мой вопрос: Есть ли у Python что-то подобное? Я нашел Pythonistas делает функциональное тестирование с различными инструментами, но ...
a) Splinter: не использует селен (и не имеет драйвера IE)
-EDIT - Похоже, Spliter теперь использует селен (см. ответы ниже).
б) альфахорах из: не был обновлен в течение года; выглядит мертвым
C) селен (raw): кажется, что много людей использование Селена напрямую, но кажется, что слой абстракции может сделать его намного проще в использовании
Итак, кто-нибудь знает что-нибудь похожее на капибару или, еще лучше, огурец, для Python (ему не нужно фактически использовать селен, но он должен поддерживать все основные браузеры)?
* EDIT*
для тех, кто не знаком с Capybara, он в основном просто добавляет API, так что вместо обычного Selenium API вы можете сделать что - то вроде это:
When /I sign in/ do
within("#session") do
fill_in 'Login', :with => 'user@example.com'
fill_in 'Password', :with => 'password'
end
click_link 'Sign in'
end
Он используется огурцом, который позволяет вам дальше абстрагироваться (почти на английском языке):
Scenario Outline: Add two numbers
Given I have entered <input_1> into the calculator
And I have entered <input_2> into the calculator
When I press <button>
Then the result should be <output> on the screen
Examples:
| input_1 | input_2 | button | output |
| 20 | 30 | add | 50 |
Я бы хотел эквивалент огурца Python, но даже просто эквивалент капибары был бы полезен.
7 ответов
вы можете проверить код Python с помощью огурца-см. огурец wiki на GitHub для получения дополнительной информации.
Если вы хотите чистое решение Python, проверьте салат. Я никогда не использовал его, но есть довольно полезная запись в блоге об этом и splinter здесь.
A. огурец как: (английский как)
- салат (огурчик подход) или
- веди себя (подходи к Корнишону) или
- Robotframework (ключевое слово подхода) (Дополнительная информация: RF больше, чем английский, как критерии. Его ключевое слово на основе и предлагает множество вспомогательных методов и встроенных библиотек. Отличный ЭКО-sysstem для внешних библиотек. Любой скрипт python также может быть изменен и использован вместе с RF)
- Освежить (Подход Gherkin) или
- горох (подходим к Корнишону) или
RedwoodHQ (ключевое слово подхода на основе) (RedwoodHQ имеет функции больше, чем "английский-как" критерии и инкапсулирует следующие функции: на основе ключевых слов, веб-тест-фреймворк, поддерживает python как один из языков и многое другое. Дополнительная информация о RedwoodHQ: теоретически это возможно, все существующие встроенные библиотеки robot-framework и все внешние тестовые библиотеки robot-framework или любая библиотека python, можно вызвать или использовать из этой веб-тестовой платформы с небольшими изменениями)
Калибр (подход корнишона):Ссылка для python: (https://gauge-python.readthedocs.io/en/latest/index.html)
под огурцом можно было бы иметь капибару, как слой абстракции, который скрывает / группирует многие действия Селена
B. Capybara like: (абстракция: скрывает / группы действие)
как один e.g чтобы щелкнуть элемент, достаточно предоставить команду click (locator) вместо работы с raw selenium api
, где нужно найти элемент, а затем нажмите кнопку. Многие другие такие абстракции существуют в дополнительных библиотеках ниже
- Вариант-1 (см. ниже)
- Вариант-2 (см. ниже)
- Вариант-3 (см. ниже)
- Вариант-4 (см. ниже) (см. ниже)
- Вариант-6: гелий (от других ответ/Комментарий)
- Вариант-7 : (см. ниже)
- вариант-8 : (см. ниже)
- Вариант-9: (см. ниже)
- вариант-10: (см. ниже)
- вариант-11: (см. ниже)
- вариант-12: (см. ниже)
- вариант-13: (см. ниже)
мои исследования: существует почти полдюжины А. активный, b. зрелый c.разработаны варианты.
python приходит С батарейки в комплекте !!
на GitHub URL-адресом: https://github.com/rtomac/robotframework-selenium2library
развитие: Активный
назначение:
одна из многих библиотек robotframework
, может также используйте как" автономную " библиотеку для вашей структуры (Проверьте e.g ниже для использования).
мысли:
- он обеспечивает абстракцию над селеном
- ввод аргументов в методы в этой библиотеке намного проще. Абстракция, предоставляемая библиотекой, один e.g, скрывает многие ненужные детали для поиска элементов. Для получения более подробной информации необходимо понять библиотеку
- можно использовать эту библиотеку снаружи робот-контекста как таковой без каких-либо изменений, хотя это может быть использование утилит пакета robot. (Это ваша домашняя работа, чтобы сделать дальнейшие эксперименты с этим lib, на этой ноте!)
- таким образом, может использоваться как отдельная библиотека для вашего фреймворка.
использование:
pip установить robotframework-selenium2library
импорт в IPython или idle консоли и запустить играющий е.г:
>>from Selenium2Library import Selenium2Library
>>start_testing= Selenium2Library()
>>start_testing.create_webdriver("Firefox")
>>start_testing.go_to("http://www.google.com")
>>.
...so on
на GitHub URL-адресом: https://github.com/ncbi/robotframework-pageobjects
развитие: Неактивен (не показывать пробки с последней версией)
назначение:
Одна из библиотек robotframework
. Предоставляет абстракцию объекта страницы над Selenium2Library
. Смогите быть использовано как автономный для вашего рамки (проверка e.g ниже для использования) или может использоваться вместе с robotframework.
мысли:
- он обеспечивает поддержку "абстракции pageobject" поверх Selenium2Library
- можно использовать эту библиотеку вне контекста robot-framework как таковой без каких-либо изменений, хотя это может быть использование утилит пакета robot. (Это ваша домашняя работа, чтобы сделать дальнейшие эксперименты на этом Примечание!)
- поэтому может использоваться как отдельная библиотека
использование:
pip установить robotframework-pageobjects
Эл.г: в ipython или idle сделайте:
>>from robotpageobjects import Page
>>start_testing=Page()
>>start_testing.create_webdriver("Firefox")
>>start_testing.go_to("http://google.com")
: robotframework-pageobjectlibrary
Github URL-адрес: https://github.com/boakley/robotframework-pageobjectlibrary
развитие: Активный
надеюсь, автор поддерживает LTS (долгосрочная поддержка) : )) , скрещенные пальцы !!
использование:
pip установить robotframework-pageobjectlibrary
мысли:
- это не можно использовать эта библиотека вне контекста robot-framework. Небольшое изменение в том, как обрабатывается контекст страницы, поможет этой библиотеке использоваться вне контекста robot-framework (это ваша домашняя работа, чтобы узнать, как!)
: Заноза
на GitHub URL-адресом: https://github.com/cobrateam/splinter
развитие: Активный
использование: splinter.readthedocs.org/en/latest/index.html
pip установить splinter
на ipython или idle do:
>>from splinter import Browser
>>browser = Browser()
>>browser.visit('http://google.com')
>>browser.fill('q', 'splinter - python acceptance testing for web applications')
>>browser.find_by_name('btnG').click()
на GitHub URL-адресом: https://github.com/Work4Labs/selenium-simple-test
развитие: Функция завершена / Активный
использование: testutils.org/sst/
pip install-U sst
на ipython или idle do:
>>> from sst.actions import *
>>> start()
Starting Firefox
>>> go_to('http://google.com')
Going to... http://google.com
Waiting for get_element
: гелий не с открытым исходным кодом (коммерческие)
Github URL-адрес: https://github.com/alisaifee/holmium.core
на GitHub URL-адресом: https://github.com/wiredrive/wtframework
: webium
на GitHub URL-адресом: https://github.com/wgnet/webium
на GitHub URL-адресом: https://github.com/actmd/elementium
на GitHub URL-адресом: https://github.com/Element-34/py.saunter
использование: фланирование
на GitHub URL-адресом: https://github.com/tomchristie/webdriverplus
использование: webdriverplus
комментарии: репозиторий не поддерживается, но достойная ссылка
Github URL-адрес: https://github.com/rama-bornfree/simple-pageobject/tree/master/PageObjectLibrary
комментарии: Простейшая оболочка pageobject, построенная вокруг selenium2library. Я владелец РЕПО
хороший, плохо и некрасиво Test-setup = (тестовая платформа и тестовая библиотека + ваш пользовательский код, зажатый в / с платформой и библиотекой):
7 * 13 = 91 способы
выберите лучшую комбинацию (тестовой структуры и тестовой библиотеки), которая подходит для них!!
я бы лично пошел на Robot-framework с Selenium2Library или Robot-framework с некоторым pageobject библиотека
конечно, я склонен и положительно предвзят в своем посте о robot-framework и Selenium2Library
в то время как OP был доволен поиском эквивалента огурца Python, что привело меня сюда, было название вопроса: эквивалент Python Capybara. В то время как огурец использует капибару, сам огурец-это совершенно другое "решение", которое только случайно связано с капибарой.
Если вы ищете что-то капибара, как без необходимости иметь дело с огурцом, проверьте заноза. Я не знаю, что было правдой, когда вопрос был опубликован, но Splinter теперь построен на Selenium, а также поддерживает другие движки (Webkit, PhantomJS, zope.browsertest и другие), и поддерживает как визуальное, так и безголовое тестирование.
Как насчет рамки робота. Это довольно круто. И с Selenium2Library он работает очень хорошо с SE2. http://robotframework.org/
вы проверили свежесть или горох?
горох не использует синтаксис огурца, но автор говорит, что это проще https://github.com/gfxmonk/pea
и Freshen пытается клонировать синтаксис и функциональные возможности огурца
теперь существует порт самой капибары для Python:
https://github.com/elliterate/capybara.py
вы можете найти свою документацию здесь:
https://elliterate.github.io/capybara.py/
Capybara поможет вам протестировать веб-приложения, имитируя, как реальный пользователь будет взаимодействовать с вашим приложением. Это агностик о драйвере, выполняющем ваши тесты, и поставляется с поддержкой Selenium в.
OP попросил реализации Python огурца или капибары, но, как указал Джим Стюарт в ответ, огурцом и капибара очень разные вещи. Поскольку название вопроса о капибаре, это то, что я отвечу.
Я один из разработчиков коммерческой оболочки Селена под названием гелий. Как и Capybara, он предлагает очень высокий уровень API для веб-автоматизации. Например, вот скрипт, который обновляет ваш Facebook статус:
from helium.api import *
start_chrome("facebook.com")
write(your_fb_email, into="Email or Phone")
write(your_fb_password, into="Password")
click("Log In")
write("Test", into="Update Status")
click("Post")
Звоноки к гелию можно свободно смешать с звоноками к селену. Например. мы могли бы расширить вышеуказанный скрипт на:
# get_driver() returns the WebDriver created by start_chrome() above.
chrome = get_driver()
chrome.find_element_by_id('btnG').click()