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多线程实例教程
Sep 06 Python
简单的Python抓taobao图片爬虫
Oct 26 Python
Python中isnumeric()方法的使用简介
May 19 Python
在Django中创建第一个静态视图
Jul 15 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 Python
python算法演练_One Rule 算法(详解)
May 17 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
numpy.linspace函数具体使用详解
May 27 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
python解释器spython使用及原理解析
Aug 24 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
Python如何发送与接收大型数组
Aug 07 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
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
FleaPHP的安全设置方法
2008/09/15 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
javascript 简练的几个函数
2009/08/29 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
extjs 如何给column 加上提示
2014/07/29 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
python中私有函数调用方法解密
2016/04/29 Python
django允许外部访问的实例讲解
2018/05/14 Python
python实现Windows电脑定时关机
2018/06/20 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
python sleep和wait对比总结
2021/02/03 Python
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
大学生简单自荐信
2013/11/10 职场文书
卫生主题班会
2015/08/14 职场文书
处理canvas绘制图片模糊问题
2022/05/11 Javascript