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日期操作学习笔记
Oct 07 Python
videocapture库制作python视频高速传输程序
Dec 23 Python
python解析文件示例
Jan 23 Python
详解Python当中的字符串和编码
Apr 25 Python
Python聊天室实例程序分享
Jan 05 Python
使用Python的Flask框架来搭建第一个Web应用程序
Jun 04 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
利用python实现汉诺塔游戏
Mar 01 Python
Python自动化爬取天眼查数据的实现
Jun 15 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显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
jquery滚动特效集锦
2015/06/03 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
Python类属性的延迟计算
2016/10/22 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
python实现文件的分割与合并
2019/08/29 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
西班牙手机之家:Phone House
2018/10/18 全球购物
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
三年级小学生评语
2014/04/22 职场文书
公共场所标语
2014/06/30 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
公司介绍信范文
2015/01/31 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
大国崛起观后感
2015/06/02 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
JS的深浅复制详细
2021/10/16 Javascript