Rubyには、Seleniumの上にCapybaraと呼ばれるこの優れた抽象化層があり、機能/受け入れ/統合テストを実行できます。また、Cucumberと呼ばれる別のライブラリがあり、これをさらに一歩進めて、実際にテストを英語で書くことができます。
どちらのライブラリもSeleniumの上に構築されており、主要なブラウザに対するテストに使用できますが、抽象化レイヤーのため、それらを使用してテストを書くのは非常に簡単です(少なくとも、機能テストと同じくらい簡単です)。
私の質問は:Pythonそのようなものはありますか?Pythonistaがさまざまなツールで機能テストを行っているのを発見しましたが...
A)Splinter:Seleniumを使用しません(IEドライバーはありません)
-EDIT- SpliterはSeleniumを使用するようになりました(以下の回答を参照)。
B)Alfajor:1年以上更新されていません。死んでいるように見える
C)Selenium(raw):多くの人がSeleniumを直接使用しているように見えますが、抽象化レイヤーを使用すると使いやすくなります
だから、誰かがCapybaraのような、またはもっと良いのはCucumberのような何かを知っていますか?Python(実際にSeleniumを使用する必要はありませんが、すべての主要なブラウザをサポートする必要があります)?
*編集*
Capybaraに慣れていない人のために、基本的にAPIを追加するだけなので、通常のSelenium APIの代わりに次のようなことができます。
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
Cucumberによって使用され、さらに抽象化することができます(ほぼ英語まで):
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 Cucumberに相当するものが大好きですが、Capybaraに相当するものであっても役立ちます。
Cucumberを使用して、Pythonコードをテストできます。詳細については、githubの Cucumber wiki を参照してください。
純粋なPythonソリューションが必要な場合は、 Lettuce をご覧ください。私はそれを使用したことはありませんが、それと破片についてかなり有用なブログエントリがあります- ここ 。
A.キュウリのような:(英語のような)
RedwoodHQ(キーワードベースのアプローチ)(RedwoodHQには「英語のような」基準よりも大きな機能があり、次の機能がカプセル化されています。キーワードベース、Webベースのテストフレームワーク、言語の1つとしてpython RedwoodHQに関する追加情報:理論的には、既存のすべてのロボットフレームワークの組み込みライブラリとすべてのロボットフレームワークの外部テストライブラリ、または任意のpythonライブラリ、またはこのWebベースのテストフレームワークから少し変更を加えて使用)
ゲージ(ガーキンアプローチ):Pythonのリファレンス:( https://gauge-python.readthedocs.io/en/latest/index.html )
Cucumberの下には、Seleniumアクションの多くを非表示/グループ化する抽象レイヤーのようなCapybaraがあります
B.カピバラのような:(抽象化:非表示/グループアクション)
たとえば、要素をクリックすると、要素を見つけてクリックする必要がある生の_Selenium api
_を操作する代わりに、click(locator)などのコマンドを提供するのに十分です。以下のオプションライブラリには、このような抽象化がさらに多くあります。
私の研究:ほぼ半ダースが存在します。アクティブ、b。成熟したc.developedオプション。
pythonが付属していますさまざまなバッテリーが含まれています!!
オプション-1: Selenium2Library
Github url:https://github.com/rtomac/robotframework-Selenium2library
開発:アクティブ
目的:robotframework
の多くのライブラリの1つは、フレームワークの「スタンドアロン」ライブラリとしても使用できます(使用方法については、以下を確認してください)。
思考:
使用法:
pip install robotframework-Selenium2library
ipythonまたはアイドルコンソールにインポートして、再生を開始します(例:
_>>from Selenium2Library import Selenium2Library
>>start_testing= Selenium2Library()
>>start_testing.create_webdriver("Firefox")
>>start_testing.go_to("http://www.google.com")
>>.
...so on
_
オプション-2: Pageobjects
Github url:https://github.com/ncbi/robotframework-pageobjects
開発:非アクティブ(最新リリースではショーストッパーなし)
目的:robotframework
のライブラリの1つ。 _Selenium2Library
_に対するページオブジェクトの抽象化を提供します。フレームワークのスタンドアロンとして使用することができます(使用方法については以下を確認してください)か、ロボットフレームワークと一緒に使用できます。
思考:
使用法:
pip install robotframework-pageobjects
例:ipythonまたはidleの場合:
_>>from robotpageobjects import Page
>>start_testing=Page()
>>start_testing.create_webdriver("Firefox")
>>start_testing.go_to("http://google.com")
_
オプション-3: robotframework-pageobjectlibrary
Github Url:https://github.com/boakley/robotframework-pageobjectlibrary
開発:アクティブ
著者がLTS(長期サポート)をサポートしていることを願っています:))、Fingers crossed !!
使用法:
pip install robotframework-pageobjectlibrary
思考:
オプション-4: Splinter
Github url:https://github.com/cobrateam/splinter
開発:アクティブ
使用法:splinter.readthedocs.org/en/latest/index.html
pip install splinter
Ipythonまたはidleの場合:
_>>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()
_
オプション-5: SSTライブラリ
Github url:https://github.com/Work4Labs/Selenium-simple-test
開発:機能の完了/アクティブ
使用法:testutils.org/sst/
pip install -U sst
ipythonまたはidleの場合:
_>>> from sst.actions import *
>>> start()
Starting Firefox
>>> go_to('http://google.com')
Going to... http://google.com
Waiting for get_element
_
オプション-6: ヘリウムオープンソースではありません(商用)
オプション-7: holmium.core
Github url:https://github.com/alisaifee/holmium.core
オプション-8: wtframework
Github url:https://github.com/wiredrive/wtframework
オプション-9: webium
Github url:https://github.com/wgnet/webium
オプション-10: elementium
Github url:https://github.com/actmd/elementium
オプション-11: saunter
Github url:https://github.com/Element-34/py.saunter
使用法:saunter
オプション-12: webdriverplus
Github url:https://github.com/tomchristie/webdriverplus
使用法:webdriverplus
コメント:リポジトリは保持されませんが、適切な参照
Option-12: Simple-Pageobject
Github url:https://github.com/rama-bornfree/simple-pageobject/tree/master/PageObjectLibrary
Comments:Selenium2libraryを中心に構築された最も単純なpageobjectラッパー。私はレポの所有者です
テストセットアップ:
Option-1-13の「すべて」のテストライブラリ。次のフレームワークのいずれかを使用して実行できます:_Lettuce, Behave, Robotframework
_またはそのことについては、任意の単体テストフレームワーク(たとえばPyUnit
、Nose
)...など.
テストフレームワークは、一般にテストケースの管理に使用されます。
mattersとは、上記のオプションでライブラリを使用する場合の快適さです。
オプション5:SST
に関する限り、フレームワーク自体の機能を備えています。たとえば、レポートを生成したり、より多くのことを実行したりできます。
したがって、SSTの場合のライブラリとフレームワークの定義はblurredであり、そのパッケージから使用したい機能の範囲によって
いくつかの楽しみのための数学:
good、bad、およびglyを持つことができるウェイの総数Test-setup =(テストフレームワークANDテストライブラリ+カスタムコードを挟むb/wフレームワークとライブラリ):
7 * 13 = 91 Ways
ニーズに合った最適な組み合わせ(テストフレームワークとテストライブラリ)を選択してください。
個人的には、Selenium2Libraryを使用したRobot-frameworkまたはpageobjectライブラリを使用したRobot-frameworkに行きます
もちろん、私はロボットフレームワークとSelenium2Libraryについての投稿に傾いており、積極的に偏っています
OPはPython Cucumberの同等物を見つけることに満足していましたが、ここで私を導いたのは質問タイトルです:a Python Capybaraの同等物。キュウリ自体は、偶然カピバラに関連するだけのまったく異なる「解決策」です。
Cucumberを使用せずにCapybaraのようなものを探している場合は、 splinter をご覧ください。質問が投稿されたときに何が真実であったかはわかりませんが、Splinterは現在Selenium上に構築されており、他のエンジン(Webkit、PhantomJS、zope.browsertestなど)もサポートしており、ビジュアルテストとヘッドレステストの両方をサポートしています。
ロボットフレームワークはどうですか。とても素晴らしいです。また、Selenium2Libraryを使用すると、SE2で非常にうまく機能します。 http://robotframework.org/
現在、カピバラ自体のPythonへの移植版が存在します。
https://github.com/elliterate/capybara.py
以下のドキュメントをご覧ください。
https://elliterate.github.io/capybara.py/
Capybaraは、実際のユーザーがアプリを操作する方法をシミュレートすることにより、Webアプリケーションのテストを支援します。テストを実行するドライバーにとらわれず、Seleniumサポートが組み込まれています。
フレッシュ、またはエンドウをチェックしましたか?
エンドウはキュウリの構文を使用しませんが、著者はそれが簡単だと言います https://github.com/gfxmonk/pea
FreshenはCucumberの構文と機能を複製しようとしています
OPはPython CucumberまたはCapybaraの実装を要求しましたが、ジムスチュワートが 彼の答え で指摘したように、CucumberとCapybaraは非常に異なるものです。カピバラについてです、それは私が答えることです。
私は Helium という商用Seleniumラッパーの開発者の1人です。 Capybaraと同様に、Webオートメーション用の非常に高レベルの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()