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用字典统计单词或汉字词个数示例
Apr 22 Python
python操作CouchDB的方法
Oct 08 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
python科学计算之narray对象用法
Nov 25 Python
python绘制彩虹图
Dec 16 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
python中scrapy处理项目数据的实例分析
Nov 22 Python
scrapy处理python爬虫调度详解
Nov 23 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
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
php中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
第二章 PHP入门基础之php代码写法
2011/12/30 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
jqPlot Option配置对象详解
2009/07/25 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
Django内容增加富文本功能的实例
2017/10/17 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
简单了解python反射机制的一些知识
2019/07/13 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
python如何编写win程序
2020/06/08 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
市场营销专业个人求职信范文
2013/12/14 职场文书
实习公司领导推荐函
2014/05/21 职场文书
新文化运动的基本口号
2014/06/21 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
学校端午节活动总结
2015/02/11 职场文书
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python