Ruby在Selenium之上有一个很棒的抽象层,名为Capybara,您可以使用它进行功能/验收/集成测试。它还有另一个名为Cucumber的库,它更进一步,让你真正用英语编写测试。
这两个库都是建立在Selenium之上的,可以用来测试任何主要的浏览器,但是由于它们的抽象层,使用它们编写测试非常容易(好吧,就像功能测试一样简单)。
我的问题是:Python有类似的东西吗?我发现Pythonistas使用各种工具进行功能测试但是......
A)Splinter:不使用Selenium(并且没有IE驱动程序)
- 编辑 - 看来Spliter现在使用Selenium(见下面的答案)。
B)Alfajor:一年多来没有更新;看起来已经死了
C)Selenium(原始):很多人似乎直接使用Selenium,但似乎抽象层可以使它更容易使用那么,对于Python来说,有没有人知道类似Capybara的东西,或者更好的Cucumber类似的东西(它不需要实际使用Selenium,但它需要支持所有主流浏览器)?
*编辑*
对于那些不熟悉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
它被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等效物也会有所帮助。
答案 0 :(得分:22)
您可以使用Cucumber测试Python代码 - 有关详细信息,请参阅github上的Cucumber wiki。
如果您需要纯Python解决方案,请查看Lettuce。我从来没有使用它,但有一个非常有用的博客文章关于它和分裂here。
答案 1 :(得分:19)
一个。黄瓜喜欢:(英文喜欢)
RedwoodHQ(基于方法关键字) (RedwoodHQ具有大于&#39; English-Like&#39;标准的功能,并封装了以下功能:基于关键字,基于Web的测试框架,支持python作为语言之一等等。 关于RedwoodHQ的其他信息:理论上它可能,所有现有的机器人框架内置库和所有机器人框架外部测试库或任何python库,可以从这个基于Web的测试框架调用或使用,只需稍加修改)< / p>
Gauge(Gherkin方法): python参考:(https://gauge-python.readthedocs.io/en/latest/index.html)
在Cucumber下面,人们可能会像Capybara那样隐藏/分组许多硒行为的抽象层
B中。 Capybara喜欢:(抽象:隐藏/群体行动)
例如,单击一个元素,它足以提供像click(locator)这样的命令,而不是使用原始selenium api
,其中需要找到一个元素,然后单击。
我的研究:差不多有六打了。活跃的,b。成熟的c.developed选项。
python来自包含各种电池!!
选项-1:Selenium2Library
Github网址: https://github.com/rtomac/robotframework-selenium2library
发展论坛: 活跃
目的:
robotframework
的众多库中的一个,也可以用作#34;独立的&#34;框架库(请在下面查看使用情况)。
思想:
用法:的
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网址: https://github.com/ncbi/robotframework-pageobjects
发展: InActive(没有显示最新版本的塞子)
目的:
robotframework
的其中一个库。提供Selenium2Library
上的页面对象抽象。可以作为框架的独立使用(请查看下面的使用方法),也可以与机器人框架一起使用。
思想:
用法:的
pip install robotframework-pageobjects
e.g: 在ipython或idle do:
>>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(长期支持):)),手指越过!!
用法:的
pip install robotframework-pageobjectlibrary
思想:
选项-4:Splinter
Github网址: https://github.com/cobrateam/splinter
发展论坛: 活跃
用法:的 splinter.readthedocs.org/en/latest/index.html
pip install 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()
选项-5:SST library
Github网址: https://github.com/Work4Labs/selenium-simple-test
发展: 功能完整/活动
用法:的 testutils.org/sst /
pip install -U sst
on ipython或idle do:
>>> from sst.actions import *
>>> start()
Starting Firefox
>>> go_to('http://google.com')
Going to... http://google.com
Waiting for get_element
选项-6:helium 非开源(商业)
选项-7:holmium.core
Github网址: https://github.com/alisaifee/holmium.core
选项-8:wtframework
Github网址: https://github.com/wiredrive/wtframework
选项-9:webium
Github网址: https://github.com/wgnet/webium
选项-10:elementium
Github网址: https://github.com/actmd/elementium
选项-11:saunter
Github网址: https://github.com/Element-34/py.saunter
用法:的 saunter
选项-12:webdriverplus
Github网址: https://github.com/tomchristie/webdriverplus
用法:的 webdriverplus
评论: 存储库没有维护,但体面的参考
选项-12:Simple-Pageobject
Github网址: https://github.com/rama-bornfree/simple-pageobject/tree/master/PageObjectLibrary
评论: 围绕selenium2library构建的最简单的页面对象包装器。我是回购的所有者
<强>试验设置:强>
&#34;所有&#34;选项-1-13中的测试库;可以使用以下任何框架运行:Lettuce, Behave, Robotframework
或者就此而言,任何单元测试框架(例如PyUnit
,Nose
)......等等。
测试框架通常用于管理测试用例,例如
重要是指上述选项中图书馆的舒适度。
选项-5:就SST
而言,它具有框架本身的功能,例如它可以生成报告并执行更多操作。
因此,在SST的情况下,库和框架的定义是模糊,具体取决于要从该包中使用的功能的范围
一些有趣的数学:
可以拥有良好,错误和丑陋测试设置=(测试框架和测试库+您的自定义代码夹在b / w框架和库中):
7 * 13 = 91种方式
选择最适合需要的组合(测试框架和测试库)!
我个人会选择Selenium2Library的机器人框架或带有一些pageobject库的Robot-framework
当然,我在关于机器人框架和Selenium2Library的帖子中倾向于并且偏向正确答案 2 :(得分:12)
虽然OP对找到Python Cucumber等价物很满意,但是我在这里得到的是问题标题:Python的等效Capybara。虽然Cucumber使用Capybara,但Cucumber本身就是一个完全不同的“解决方案”,只是偶然与Capybara有关。
如果您正在寻找像Capybara一样的东西,而不必处理黄瓜,请查看splinter。我不知道问题发布时的真实情况,但Splinter现在建立在Selenium上,并支持其他引擎(Webkit,PhantomJS,zope.browsertest等),并支持视觉和无头测试。 / p>
答案 3 :(得分:9)
机器人框架怎么样?这太棒了。使用Selenium2Library,它可以很好地与SE2配合使用。 http://robotframework.org/
答案 4 :(得分:8)
现在确实存在一个Capybara本身的Python端口:
https://github.com/elliterate/capybara.py
您可以在此处找到其文档:
https://elliterate.github.io/capybara.py/
Capybara通过模拟真实用户与您的应用互动的方式来帮助您测试Web应用程序。它与运行测试的驱动程序无关,并且内置了Selenium支持。
答案 5 :(得分:7)
答案 6 :(得分:3)
OP询问了Cucumber或Capybara的Python实现,但正如Jim {斯托华特在his answer指出的那样,Cucumber和Capybara是非常不同的东西。由于问题的标题是关于水豚,我将回答这个问题。
我是名为Helium的商业Selenium包装器的开发人员之一。与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")
呼叫氦气可以随意调用Selenium。例如。我们可以通过以下方式扩展上述脚本:
# get_driver() returns the WebDriver created by start_chrome() above.
chrome = get_driver()
chrome.find_element_by_id('btnG').click()