Python自动化测试工具Splinter简介和使用实例


Posted in Python onMay 13, 2014

Splinter 快速介绍

官方网站:http://splinter.cobrateam.info/

官方介绍:

Splinter is an open source tool for testingweb applications using Python. It lets you automate browser actions, such asvisiting URLs and interacting with their items

特性:

1、可以模拟浏览器行为,访问指定的URL,并且可以指定不同的浏览器类型。比如firefox或者chrome等。不同的浏览器只要在本地安装对应的驱动,就可以在代码中通过名称指定来访问。
2、支持cookie操作,可以很方便的添加和删除cookie;
3、支持模拟鼠标的动作,比如滑动到某个按钮上,焦点离开某个按钮等等,对于带有动态提示的页面,如搜索引擎的关键字输入框的动态提示,可以非常方便的测试。
4、支持模拟键盘的输入操作,对input等控件的输入可以模拟用户的type过程。
5、支持直接运行js或者调用页面的js。
6、支持模拟上传文件。
7、对radio和checkbox有专门的api支持,非常方便;
8、支持快速的获取页面的元素或者判断是否存在文本,用于开发判断页面提示信息是否准确非常方便。
9、最重要的,splinter的API非常简单,配合官方的文档学习成本几乎是0,当然你得懂一些python语法。如果你比较了解js和css,你可能会像喜欢jquery一样喜欢它;

功能:

Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。
然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,像看电影一样看着屏幕上各种动作自动完成然后收集结果即可。

举个例子,我们要回归登录功能,首先要开发如下模拟登录行为的脚本:

#!/usr/bin/py2
# -*- coding: utf-8 -*-
#encoding=utf-8
import sys, re
from splinter.browser import Browser  
CLOASE_AFTER_TEST = False
reload(sys)
sys.setdefaultencoding('utf8')
encoding = lambda x:x.encode('gbk')  
def testLogin(desc, username, password, result):
    output(desc)      
    browser.fill('TPL_username',username.decode('utf8'))
    browser.fill('TPL_password',password.decode('utf8'))
    browser.find_by_value('登录').first.click()
    checkresult(result)  
def output(x):
    print encoding(x)  
def resultMsg(x):
    if x == True:
        print 'pass'
    else:
        print '[X]not pass'
def checkresult(x):
    """  check result message, x : the error message u want  """
    resultMsg(browser.is_text_present(x))  
__testUrl = 'http://waptest.taobao.com/login/login.htm?tpl_redirect_url=http%3A%2F%2Fm.taobao.com%2F'  
# chrome driver : http://code.google.com/p/selenium/wiki/ChromeDriver
browser = Browser()  # already support firefox
browser.visit(__testUrl)
output("测试页面:"+browser.title)  
try:
    # test login
    testLogin('测试未输入用户名','','','请输入会员名')
    testLogin('测试未输入密码','qd_test_001','','请输入密码')
    testLogin('测试帐户不存在','这是一个不存在的名字哦','xxxxxxx','该账户名不存在')
    testLogin('测试成功登录','qd_test_001','taobao1234','继续登录前操作')  
    # test find password
    output("测试[找回密码]链接")
    browser.visit(__testUrl)
    backPasswordLink = browser.find_link_by_text('取回密码')
    if 1 == len(backPasswordLink):
        backPasswordLink.first.click()
        ru = re.findall(re.compile(".*(reg/gp.htm).*", re.IGNORECASE), browser.url)
        if ru is not None:
            checkresult('找回密码')
        else:
            output("测试找回密码链接失败")  
except Exception,x:
    print x  
if CLOASE_AFTER_TEST:
    browser.quit()

Python 相关文章推荐
python生成指定尺寸缩略图的示例
May 07 Python
python抽象基类用法实例分析
Jun 04 Python
python select.select模块通信全过程解析
Sep 20 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
Python数据类型之Dict字典实例详解
May 07 Python
Python大数据之使用lxml库解析html网页文件示例
Nov 16 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
Python实现投影法分割图像示例(一)
Jan 17 Python
python 回溯法模板详解
Feb 26 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 Python
解决Windows下python和pip命令无法使用的问题
Aug 31 Python
Python日志模块logging用法
Jun 05 Python
Python获取远程文件大小的函数代码分享
May 13 #Python
Python FTP操作类代码分享
May 13 #Python
python生成指定尺寸缩略图的示例
May 07 #Python
python读取浮点数和读取文本文件示例
May 06 #Python
python创建线程示例
May 06 #Python
Python Web服务器Tornado使用小结
May 06 #Python
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 #Python
You might like
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
最常用的8款PHP调试工具
2014/07/06 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
php的扩展写法总结
2019/05/14 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
从零学Python之入门(四)运算
2014/05/27 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
人力资源求职信
2014/05/25 职场文书
文明城市标语
2014/06/16 职场文书
计划生育证明格式范本
2014/09/12 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
委托公证书样本
2015/01/23 职场文书
交通事故和解协议书
2015/01/27 职场文书
三下乡个人总结
2015/03/04 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
党员读书活动心得体会
2016/01/14 职场文书
python中如何对多变量连续赋值
2021/06/03 Python