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脚本将Bing的每日图片作为桌面的教程
May 04 Python
在Python中的Django框架中进行字符串翻译
Jul 27 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
想学python 这5本书籍你必看!
Dec 11 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
浅析python中while循环和for循环
Nov 19 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
如何用Python绘制3D柱形图
Sep 16 Python
Python实现随机爬山算法
Jan 29 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
python用字典统计单词或汉字词个数示例
2014/04/22 Python
python创建线程示例
2014/05/06 Python
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
教学大赛获奖感言
2014/01/15 职场文书
艺术教育实施方案
2014/05/03 职场文书
节能环保演讲稿
2014/08/28 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
房贷收入证明范本
2015/06/12 职场文书
上学路上观后感
2015/06/16 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏