lettuce webdriver 自动化测试---玩转BDD
行为驱动开发(BDD),依然高大上的矗立在远方,很少被人问津,一方面是BDD的思想不太容易理解,别一方面BDD的资料并不多。中文的资料就更少了。
之前增写过一篇《python BDD 框架之lettuce》 来介绍BDD ,本文将在此基础上通过lettuce 和webdriver来实现自动化测试,感兴趣的测试同学跟我一起装X吧!
下面向读者介绍如何通过lettuce 和 webdriver 结合来编写自动化脚本。
环境配置:
------------------------------------------
前提:有python载发环境,并且安装了pip ,强烈建议在linux下操作。
第一步,安装lettuce
root@machine:~$ [sudo] pip install lettuce
第二步,安装lettuce_webdriver
https://pypi.python.org/pypi/lettuce_webdriver
root@machine:~$ [sudo] pip install lettuce_webdriver
第三步,安装nose
nose继承自unittest,属于第三方的python单元测试框架,且更容易使用,lettuce_webdriver包的运行依赖于nose模块
https://pypi.python.org/pypi/nose/
root@machine:~$ [sudo] pip install nose
---------------------------------
下面以为百度搜索为例,好吧!谁让这个例子能简单明了的讲解问题呢。所以,我们再次以百度搜索为例。
一般的百度搜索自动化脚本是这样的:
# coding = utf-8
from selenium import webdriver browser = webdriver.Firefox()
browser.get("http://www.baidu.com")
browser.find_element_by_id("kw1").send_keys("selenium")
browser.find_element_by_id("su1").click()
browser.quit()
下面看看BDD是怎么玩的:
创建目录结构如下:
.../test/features/baidu.feature
/step_definitions/setps.py
/support/terrain.py
先来回顾一下我们去写百度搜索脚本的过程:
功能:访问百度 场景:搜索selenium
我去访问百度的“http://www.badiu.com”
通过id 为“kw1”找到输入框并输入“selenium”关键字
点击 id为“su1” 按钮
然后,我在搜索结果上找到了“seleniumhq.com”的网址
最后,我关闭了浏览器
OK,确定了我们要做事情的过程,下面将其转换成BDD 的描述文件。
baidu.feature
Feature: Go to baidu Scenario: search selenium
Given I go to "http://www.baidu.com/"
When I fill in field with id "kw1" with "selenium"
And I click id "su1" with baidu once
Then I should see "seleniumhq.org" within 2 second
Then I close browser
setps.py
from lettuce import *
from lettuce_webdriver.util import assert_false
from lettuce_webdriver.util import AssertContextManager def input_frame(browser, attribute):
xpath = "//input[@id='%s']" % attribute
elems = browser.find_elements_by_xpath(xpath)
return elems[0] if elems else False def click_button(browser,attribute):
xpath = "//input[@id='%s']" % attribute
elems = browser.find_elements_by_xpath(xpath)
return elems[0] if elems else False #定位输入框输入关键字
@step('I fill in field with id "(.*?)" with "(.*?)"')
def baidu_text(step,field_name,value):
with AssertContextManager(step):
text_field = input_frame(world.browser, field_name)
text_field.clear()
text_field.send_keys(value) #点击“百度一下”按钮
@step('I click id "(.*?)" with baidu once')
def baidu_click(step,field_name):
with AssertContextManager(step):
click_field = click_button(world.browser,field_name)
click_field.click() #关闭浏览器
@step('I close browser')
def close_browser(step):
world.browser.quit()
注意:@step (‘xxx’)读取了baidu.feature 里有关键字,用正则表达式匹配的。 这是BDD的核心点。理解了这一点,就知道BDD是怎么玩的了。
terrain.py
from lettuce import before, world
from selenium import webdriver
import lettuce_webdriver.webdriver @before.all
def setup_browser():
world.browser = webdriver.Friefox()
terrain文件配置浏览器驱动,可以作用于所有测试用例。
在.../test/目录下输入lettuce命令,运行结果如下图
对于当前测试用例来说,添加新的测试场景也非常简单,我们只用修改baidu.feature即可:
Feature: Go to baidu Scenario: search selenium
Given I go to "http://www.baidu.com/"
When I fill in field with id "kw1" with "selenium"
And I click id "su1" with baidu once
Then I should see "seleniumhq.org" within 2 second Scenario: search lettuce_webdriver
Given I go to "http://www.baidu.com/"
When I fill in field with id "kw1" with "lettuce_webdriver"
And I click id "su1" with baidu once
Then I should see "pypi.python.org" within 2 second
Then I close browser
运行结果如下:
通过lettuce 来编写自动化脚本将是一件非常有趣的事儿。
lettuce webdriver 自动化测试---玩转BDD的更多相关文章
- Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考
Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考 //System.setProperty("webdriver.firefox.bin" ...
- 转来的——python webdriver自动化测试初步印象——转来的
python webdriver自动化测试初步印象 以下示例演示启动firefox,浏览google.com,搜索Cheese,等待搜索结果,然后打印出搜索结果页的标题 from selenium i ...
- AutoIt实现Webdriver自动化测试文件上传
在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口. Auto ...
- Python WebDriver自动化测试
转载来自: http://www.cnblogs.com/fnng/p/3160606.html Webdriver Selenium 是 ThroughtWorks 一个强大的基于浏览器的开源自动化 ...
- selenium webdriver自动化测试
selenium家族介绍 Selenium IDE:Selenium IDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能. Selenium ...
- 关于Webdriver自动化测试时,页面数据与数据库id不一致的处理方式,需要使用鼠标事件
有时候Web页面需要通过onmouseout事件去动态的获取数据库的数据,在使用Webdriver进行自动化测试的时候,对于页面显示的数据,其在数据库可能会存在一个id或者code,但是id或者cod ...
- WebDriver自动化测试工具(1)---环境搭建
Webdriver是一个前端自动化测试工具,可以模拟用户点击链接,填写表单,点击按钮等操作,下面介绍其使用 一.下载WebdriverC#类库以及对应浏览器驱动 http://www.selenium ...
- python webdriver 自动化测试练习 1-- 在线调查
__author__ = 'Mickey0s' # coding:utf8 from selenium import webdriver from selenium.webdriver.common. ...
- Selenium Webdriver 自动化测试开发常见问题(C#版)
转一篇文章,有修改,出处http://www.7dtest.com/site/blog-2880-203.html 1:Selenium中对浏览器的操作 首先生成一个Web对象 IWebDriver ...
随机推荐
- 还有人在用SQL Server 2000或2005吗? 2014来了!
你的项目,还在用SQL Server 2000或2005吗? 很多人甚至还没有来得及用过SQL Server 2008,SQL Server 2012,现在SQL Server 2014已经出来了! ...
- Bilateral Filtering(双边滤波) for SSAO(转)
原文链接:http://blog.csdn.net/bugrunner/article/details/7170471 另外一篇相似的英文资料:http://homepages.inf.ed.ac.u ...
- 鸡和蛋的OO设计
一个题目:用类图表示出鸡和蛋的关系. 第一版: 第二版: 一个鸡可以下N个蛋,一个蛋可以浮出0或者1个鸡. 问题是公鸡不会下单,第三版:
- 声色贴生成图片总结 Imagick
2014-08-24 都是按以前的程序进行了,但去年8月都可以用Imagick正常生成CMYK的图片,但今天就是不行. 经过一切测试方法及思路,解决方法如下. 问题主要出现在: 生成的二维码是RGB格 ...
- H608B无线路由破解方法
家里的无线路由送人了,准备重新买,今日一看,竟然自带的猫(ZTE H608B)有wifi天线和4个LAN口,想着是支持路由功能的,那必然就是从软件上做了手脚.搜索该型号发现没人刷openwrt或者to ...
- log4j总结
log4j介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Sysl ...
- Modbus通讯协议学习 - 串口调试
概述 我们在做任何事情之前都需要获取很多 调试步骤: 1:485转换器连接硬件 2:485转换器上的USB接口连接电脑. 3:打开设备管理器 ->查看端口 4:打开串口调试工具,在串口配置的地方 ...
- Android studio NDK 编译 "$USE_DEPRECATED_NDK=true" 异常问题解决
我的项目是https://github.com/leixiaohua1020/simplest_ffmpeg_mobile/tree/master/simplest_ffmpeg_android_st ...
- JS实现剪切板添加网站版权、来源
公司官网有这样需求,写好后,备份以后留用. 只兼容chrome.firefox.IE9+等主流浏览器. // https://developer.mozilla.org/en-US/docs/Web/ ...
- 解决CSS移动端1px边框问题
移动项目开发中,安卓或者IOS等高分辨率屏幕会把1px的border渲染成2px来显示,网上搜了一下,解决方法如下: 一.利用css中的transform的缩放属性解决,推荐这个.如下面代码. < ...