A. 像黄瓜一样:(英语中的)
- Lettuce(采用Gherkin方法)或
- Behave(采用Gherkin方法)或
- Robotframework(采用基于关键字的方法)
(附加信息:RF大于英语Like标准。它是基于关键字的,提供了大量的辅助方法和内置库。对于外部库而言,有着良好的生态系统。任何Python脚本都可以修改并与RF一起使用)
- Freshen(采用Gherkin方法)或
- Pea(采用Gherkin方法)或
RedwoodHQ(采用基于关键字的方法)
(RedwoodHQ具有超过“英语式”标准的特性,封装了以下功能:基于关键字、Web测试框架、支持Python作为其中一种语言等。
关于RedwoodHQ的其他信息:理论上来说,所有现有的robot-framework内置库和所有robot-framework外部测试库,或者任何Python库,都可以通过这个基于Web的测试框架进行调用或使用,只需进行少量修改)
Gauge(采用Gherkin方法):Python参考:(https://gauge-python.readthedocs.io/en/latest/index.html)
在Cucumber下面,可以有类似Capybara的抽象层,它可以隐藏/分组许多Selenium操作。
B. 大水牛喜欢:(抽象:隐藏/分组操作)
例如,要单击一个元素,只需提供类似于click(locator)的命令即可,而不是使用原始的selenium api,其中需要找到一个元素,然后单击。许多类似的抽象存在于下面的可选库中
- 选项1(见下文)
- 选项2(见下文)
- 选项3(见下文)
- 选项4(见下文)
- 选项5(见下文)
- 选项6:氦(来自其他答案/评论)
- 选项7:(见下文)
- 选项8:(见下文)
- 选项9:(见下文)
- 选项10:(见下文)
- 选项11:(见下文)
- 选项12:(见下文)
- 选项13:(见下文)
我的研究:目前有将近半打的选项,其中包括a.活跃的,b.成熟的和c.发展中的。
Python自带各种实用工具!!
选项-1: Selenium2Library
Github url: https://github.com/rtomac/robotframework-selenium2library
开发:
活跃
目的:
robotframework的许多库之一,也可以用作您框架的“独立”库(检查下面的使用情况)。
思路:
- 它提供了对selenium的抽象
- 在这个库中方法的参数输入要简单得多。库提供的抽象,例如,隐藏了许多查找元素的不必要细节。要了解更多详细信息,需要理解该库。
- 可以在没有进行任何修改的情况下使用此库,即使可能使用robot包的实用程序。(这是您进一步对该库进行实验的功课!)
- 因此,可用作您框架的独立库。
用法:
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
选项2: 页面对象
Github网址:
https://github.com/ncbi/robotframework-pageobjects
开发:
不活跃(最新版本没有显示停止器)
目的:
robotframework的库之一。在Selenium2Library
上提供了一个页面对象抽象。可以作为您的框架的独立部分使用(请参阅下面的用法),也可以与robotframework一起使用。
想法:
- 它在Selenium2Library上提供了“页面对象抽象”支持
- 可以在robot-framework上下文之外使用此库而无需任何修改,尽管它可能使用robot包的实用程序。(进一步实验是你的家庭作业!)
- 因此,可以作为独立库使用
用法:
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网址:
https://github.com/boakley/robotframework-pageobjectlibrary
开发:
活跃
希望作者支持LTS(长期支持):) ,祈求好运!!
用法:
pip install robotframework-pageobjectlibrary
想法:
- 不可能在robot-framework上下文之外使用此库。稍微更改页面上下文处理方式将有助于在robot-framework上下文之外使用此库(这是您的家庭作业,找出如何实现!)
选项-4:Splinter
Github链接:
https://github.com/cobrateam/splinter
开发状态:
活跃
Usage:
splinter.readthedocs.org/en/latest/index.html
使用pip安装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()
Option-5:
SST library
Github网址:
https://github.com/Work4Labs/selenium-simple-test
开发情况:
功能已完善/活跃
Usage:
testutils.org/sst/
pip安装 -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网址:
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构建。我是这个代码仓库的所有者。
测试设置:
在选项1-13中,所有的测试库都可以使用以下任何一个框架运行:Lettuce,Behave,Robotframework
或其他单元测试框架(例如PyUnit
,Nose
)等等。
测试框架通常用于管理测试用例,例如:
- 英语格式,如gherkin、关键字、表格等
- 报告测试运行
- 连接到CI
- 测试用例和测试套件的设置/拆卸
- 测试用例的标记
- 其他任何测试框架的功能
重要的是掌握上述选项中的库的使用方法。
选项5:就SST而言,它本身具有框架的特性,例如可以生成报告等等。
因此,在SST的情况下,库和框架的定义是模糊的,这取决于您希望从该软件包中使用的功能的程度。
一些有趣的数学:
测试框架、测试库和自定义代码三者组合的总方案数 =(测试框架和测试库)*(框架和库之间的自定义代码):
7 * 13 = 91 种方式
选择最适合自己需求的测试框架和测试库的最佳组合!!
我个人会选择 Robot-framework 加上 Selenium2Library 或 Robot-framework 加上某个页面对象库。
当然,我在我的帖子中对 Robot-framework 和 Selenium2Library 持积极的偏见。