У 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 приходит С батарейки в комплекте !!


: Selenium2Library

на 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

: Pageobjects

на 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()

: библиотека SST

на 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

: wtframework

на GitHub URL-адресом: https://github.com/wiredrive/wtframework

: webium

на GitHub URL-адресом: https://github.com/wgnet/webium

: elementium

на GitHub URL-адресом: https://github.com/actmd/elementium

: фланирование

на GitHub URL-адресом: https://github.com/Element-34/py.saunter

использование: фланирование

: webdriverplus

на GitHub URL-адресом: https://github.com/tomchristie/webdriverplus

использование: webdriverplus

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

: Простой-Pageobject

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 пытается клонировать синтаксис и функциональные возможности огурца

https://github.com/rlisagor/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()