Czy Python ma coś takiego jak Capybara/ogórek?
Ruby ma świetną warstwę abstrakcji na szczycie Selenium o nazwie Capybara, której możesz użyć do testów funkcjonalnych/akceptacyjnych / integracyjnych. Posiada również inną bibliotekę o nazwie Cucumber, która idzie o krok dalej i pozwala pisać testy w języku angielskim.
Obie biblioteki są zbudowane na bazie Selenium i mogą być używane do testowania w dowolnej przeglądarce, ale ze względu na ich warstwy abstrakcyjne bardzo łatwo jest pisać testy za ich pomocą (cóż, tak proste, jak testy funkcjonalne dostaje co najmniej).
Moje pytanie brzmi: czy Python ma coś takiego? Znalazłem Pythonistas robi testy funkcjonalne z różnych narzędzi, ale ...
A) Splinter: nie używa selenu (i nie ma sterownika IE)
-EDIT - Wygląda na to, że Spliter używa teraz selenu(patrz Odpowiedzi poniżej).
B) Alfajor: nie był aktualizowany od ponad roku; wygląda na martwego
C) selen (surowy): Wiele osób wydaje się używać selenu bezpośrednio, ale wydaje się, że warstwa abstrakcji może sprawić, że będzie o wiele łatwiejsza w użyciu
Czy ktoś zna coś podobnego do Capybary, albo jeszcze lepiej do Pythona (nie musi faktycznie używać Selenium, ale musi obsługiwać wszystkie główne przeglądarki)?
* EDIT *
Dla tych, którzy nie są zaznajomieni z Capybara, to po prostu dodaje API tak, że zamiast normalnego API Selenium można zrobić coś takiego:
When /I sign in/ do
within("#session") do
fill_in 'Login', :with => '[email protected]'
fill_in 'Password', :with => 'password'
end
click_link 'Sign in'
end
Jest używany przez ogórek, który pozwala dalsze streszczenie (prawie po angielsku):
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 |
[2]}chciałbym odpowiednik pytona ogórkowego, ale nawet odpowiednik Capybary byłby pomocny. 7 answers
Możesz przetestować kod Pythona używając Cucumber - zobacz Cucumber wiki na GitHubie, aby uzyskać więcej informacji.
Jeśli chcesz mieć czyste rozwiązanie Pythona, sprawdź Lettuce. Nigdy go nie używałem, ale jest o nim dość przydatny wpis na blogu i splinter tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-01 10:44:51
A. ogórek jak: (angielski jak)
- sałata (Korniszon) lub
- Behave (Approach Gherkin) or
- Robotframework (podejście oparte na słowach kluczowych) (Dodatkowe Info: RF jest większy niż Angielski jak kryteria. Jego słowa kluczowe oparte i oferuje mnóstwo metod pomocniczych i wbudowanych bibliotek. Świetny eco-sysstem dla bibliotek zewnętrznych. Każdy skrypt Pythona może być również modyfikowany i używany wraz z RF)
- odświeżyć (podejście Korniszon) lub
- Pea (Podejście Korniszon) lub
-
RedwoodHQ (podejście oparte na słowach kluczowych) (RedwoodHQ ma funkcje większe niż "angielskie" kryteria i zawiera następujące funkcje: oparte na słowach kluczowych, webowy Framework testowy, obsługuje python jako jeden z języków i wiele więcej. Dodatkowe informacje na temat RedwoodHQ: teoretycznie możliwe, wszystkie istniejące wbudowane biblioteki robot-framework i wszystkie zewnętrzne biblioteki testowe robot-framework lub dowolna biblioteka Pythona, mogą być wywoływane lub używane z tej strony internetowej Framework testowy z niewielką modyfikacją)
Gauge (Gherkin approach): odniesienie do Pythona: (https://gauge-python.readthedocs.io/en/latest/index.html)
Pod ogórkiem można mieć Capybarę jak warstwę abstrakcji, która ukrywa/ grupuje wiele działań selenu
B. Capybara like: (Abstraction: hides / groups action)
Jako jeden np. do kliknięcia elementu, wystarczy podać polecenie jak click (locator) zamiast pracować z raw selenium api
, gdzie trzeba znaleźć element, a następnie kliknąć. O wiele więcej takich abstrakcji istnieje w bibliotekach opcjonalnych poniżej
- Opcja - 1 (patrz niżej)
- Opcja - 2 (patrz niżej)
- Opcja - 3 (patrz niżej)
- opcja - 4 (patrz niżej)
- Opcja-5 (patrz niżej)
- opcja - 6: Hel (od innych Odpowiedz/skomentuj)
- opcja-7: (patrz niżej)
- opcja-8 : (Zobacz poniżej)
- opcja-9: (patrz niżej)
- opcja-10: (patrz niżej)
- opcja-11: (patrz niżej)
- opcja-12: (patrz niżej)
- opcja-13: (patrz niżej)
Moje badania: istnieje prawie pół tuzina aktywnych, B. dojrzałych c. rozwiniętych opcji.
python jest dostarczany z różnymi bateriami w zestawie !!
Opcja-1: Selenium2Library
Github url: https://github.com/rtomac/robotframework-selenium2library
rozwinięcie: Active
cel:
jedna z wielu bibliotek robotframework
, może być również używana jako" samodzielna " biblioteka dla Twojego frameworka (Sprawdź np.
myśli:
- dostarcza abstrakcji nad selenem
- wprowadzanie argumentów do metod w tej bibliotece jest o wiele prostsze. Abstrakcji dostarczonej przez Bibliotekę, jeden np. ukrywa wiele zbędnych szczegółów do znajdowania elementów. Aby uzyskać więcej informacji, należy zrozumieć bibliotekę Biblioteka ta może być używana poza kontekstem robot-framework jako taka bez żadnej modyfikacji, chociaż może być używana z narzędziami pakietu robot. (To Twoja praca domowa do dalszych eksperymentów z tym lib, na tej nucie!)
- dlatego może być używany jako samodzielna biblioteka dla ramy.
użycie:
Pip install robotframework-selenium2library
Importuj do konsoli ipython lub idle i zacznij grać e. g:
>>from Selenium2Library import Selenium2Library
>>start_testing= Selenium2Library()
>>start_testing.create_webdriver("Firefox")
>>start_testing.go_to("http://www.google.com")
>>.
...so on
Option-2: Pageobjects
Github url: https://github.com/ncbi/robotframework-pageobjects
rozwój: Nieaktywne (No show stoppers with latest release)
cel:
Jeden z bibliotek robotframework
. Zapewnia abstrakcję obiektu strony nad Selenium2Library
. Może być używany jako samodzielny framework (Sprawdź np. poniżej) lub może być używany wraz z robotframework.
myśli:
- Dzięki temu, że jest on dostępny w wielu wersjach językowych, można go używać również w innych językach.]}
Biblioteka ta może być używana poza kontekstem robot-framework jako taka bez żadnej modyfikacji, chociaż może być używana z narzędziami pakietu robot. (To Twoja praca domowa do dalszych eksperymentów na tej nucie!)
Dlatego może być używana jako samodzielna biblioteka
użycie:
Pip install robotframework-pageobjects
E. g: w ipythonie lub idle do:
>>from robotpageobjects import Page
>>start_testing=Page()
>>start_testing.create_webdriver("Firefox")
>>start_testing.go_to("http://google.com")
Option-3: robotframework-pageobjectlibrary
Github Url: https://github.com/boakley/robotframework-pageobjectlibrary
rozwój: Active
Mam nadzieję, że autor wspiera LTS (Long Term Support):)), trzymam kciuki !!
użycie:
Pip install robotframework-pageobjectlibrary
myśli:
- nie jest możliwe użycie tej biblioteki poza kontekstem robot-framework. Drobna zmiana sposobu działania strony context is handed pomogłoby tej bibliotece używać poza kontekstem robot-framework (to Twoja praca domowa, aby dowiedzieć się, jak!)
Opcja-4: Splinter
Github url: https://github.com/cobrateam/splinter
rozwinięcie: Active
sposób użycia: splinter.readthedocs.org/en/latest/index.html
Pip install splinter
Na ipythonie lub bezczynności 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()
Opcja-5: biblioteka SST
Github url: https://github.com/Work4Labs/selenium-simple-test
rozwój: Funkcja complete / Active
sposób użycia: testutils.org/sst /
Pip install-U SST
Na ipython lub idle do:
>>> from sst.actions import *
>>> start()
Starting Firefox
>>> go_to('http://google.com')
Going to... http://google.com
Waiting for get_element
Opcja-6: Hel Nie open source (Komercyjne)
Opcja-7: Holm.rdzeń
Github url: https://github.com/alisaifee/holmium.core
Opcja-8: wtframework
Github url: https://github.com/wiredrive/wtframework
Opcja-9: webium
Github url: https://github.com/wgnet/webium
Opcja-10: elementium
Github url: https://github.com/actmd/elementium
Github url: https://github.com/Element-34/py.saunter
sposób użycia: saunter
Opcja-12: webdriverplus
Github url: https://github.com/tomchristie/webdriverplus
sposób użycia: webdriverplus
Komentarze: repozytorium nie jest utrzymywane, ale przyzwoite odniesienie
Option - 12: Simple-Pageobject
Github url: https://github.com/rama-bornfree/simple-pageobject/tree/master/PageObjectLibrary
Komentarze: Najprostszy wrapper stron zbudowany wokół selenium2library. Jestem właścicielem repo
Test-setup:
"wszystkie" biblioteki testowe w opcji-1-13; mogą być uruchamiane przy użyciu dowolnego z następujących frameworków: Lettuce, Behave, Robotframework
lub dowolnego frameworku testów jednostkowych(np. PyUnit
, Nose
)...i tak dalej .
Framework testowy jest ogólnie używany do zarządzania przypadkami testowymi, np.]}
- angielskie formaty, takie jak gherkin, keyword, tabular itd ...
- raportowanie przebiegu testu
- hooking to CI
- konfiguracja / usuwanie przypadków testowych i zestawów testowych
- oznaczanie przypadków testowych
- inne funkcjonalności, nad którymi można pomyśleć o dowolnym frameworku testowym
To, co ma znaczenie, to komfort korzystania z bibliotek w powyższych opcjach.
Opcja-5: jeśli chodzi o SST
, ma ona cechy samego frameworka, np. może generować raporty i robić wiele innych rzeczy.
Tak więc definicja biblioteki i frameworka w przypadku SST jest niewyraźne , w zależności od zakresu funkcji, które chcesz użyć z tego pakietu
trochę matematyki dla Zabawy:
Total number of ways one could have a good, bad , and Brzydula Test-setup = (Framework testowy i biblioteka testowa + Twój kod niestandardowy):
7 * 13 = 91 sposoby
Wybierz najlepszą kombinację (frameworka testowego i biblioteki testowej), która garnitury potrzebne !!
Osobiście wybrałbym Robot-framework z Selenium2Library lub Robot-framework z jakąś biblioteką pageobject
Oczywiście, jestem pochylony i pozytywnie stronniczy w moim poście o robot-framework i Selenium2Library
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-29 01:23:04
Podczas gdy OP był zadowolony ze znalezienia odpowiednika Python Cucumber, co doprowadziło mnie tutaj był tytuł pytania: Python odpowiednik Capybara. Podczas gdy ogórek używa Capybary, Sam ogórek jest zupełnie innym "rozwiązaniem", które jest tylko przypadkowo związane z Capybarą.
Jeśli szukasz czegoś podobnego do Capybary bez konieczności radzenia sobie z ogórkiem, sprawdź splinter. Nie wiem, co było prawdą, gdy pytanie zostało opublikowane, ale Splinter jest teraz zbudowany na Selenie, a obsługuje również inne silniki (Webkit, PhantomJS, zope.browsertest i inne) oraz obsługuje zarówno testowanie wizualne, jak i bezgłowe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-16 18:20:59
A co z robotami? To niesamowite. A Z Selenium2Library to działa naprawdę dobrze z SE2. http://robotframework.org/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-13 02:24:02
Sprawdziłeś odświeżacz, czy groszek?
Groszek nie używa składni ogórka, ale autor twierdzi, że łatwiej https://github.com/gfxmonk/pea
I Freshen próbuje sklonować składnię i funkcjonalności ogórka
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-27 13:14:33
Istnieje obecnie port samego Capybara do Pythona:
Https://github.com/elliterate/capybara.py
Jego dokumentację znajdziesz tutaj:
Https://elliterate.github.io/capybara.py/
Capybara pomaga testować aplikacje internetowe, symulując, jak prawdziwy użytkownik wchodzi w interakcję z Twoją aplikacją. Jest on niezależny od Sterownika przeprowadzającego testy i posiada wbudowaną obsługę Selenium.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-12 00:14:12
OP poprosił o implementacje Pythona Cucumber lub Capybara, ale jak Jim Stewart zwrócił uwagę w jego odpowiedź , Cucumber i Capybara to bardzo różne rzeczy. Skoro tytuł pytania dotyczy Kapybary, to na to odpowiem.
Jestem jednym z twórców komercyjnego opakowania selenu o nazwie Hel . Podobnie jak Capybara, oferuje bardzo wysoki poziom API do automatyzacji sieci. Na przykład, oto skrypt, który aktualizuje Facebook status:
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")
Połączenia z helem można dowolnie mieszać z połączeniami z selenem. Np. możemy rozszerzyć powyższy skrypt o:
# get_driver() returns the WebDriver created by start_chrome() above.
chrome = get_driver()
chrome.find_element_by_id('btnG').click()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:17