splinter自动化测试工具学习

splinter自动化测试工具学习。模拟浏览器操作。

官方标文档:http://splinter.cobrateam.info/docs/

测试环境如下:
windows 8 64位操作系统安装python2.7.8

window按顺序安装下面的包,也可以直接用pip安装。
https://bootstrap.pypa.io/ez_setup.py
https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz
https://pypi.python.org/packages/source/s/selenium/selenium-2.44.0.tar.gz
https://pypi.python.org/packages/source/s/splinter/splinter-0.6.0.tar.gz
下面库是后台使用也可以在后面安装
https://pypi.python.org/packages/source/z/zope.testbrowser/zope.testbrowser-4.0.4.zip

学习部分,简化实例
实例化
from splinter import Browser
browser = Browser()

基础部分:
访问部分 browser.visit(‘www.xxx.com’)
填表部分 browser.fill(‘hello’)
单击按钮 browser.find_by_name(‘button’).click()
获取返回值(用if判断) browser.is_text_present(‘OK’)
退出部分 browser.quit()
选择不同浏览器 browser = Browser(‘firefox’)
重新导入 browser.reload()
后退 browser.back()
前进 browser.forward()
获取title browser.title
获取页面 browser.html
获取当前url browser.url
模拟浏览器头 browser = Browser(user_agent=”Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en)”)

常用部分:
查找相关元素,可以使用火狐的F12(大家应该懂)。
browser.find_by_css(‘h1’)
browser.find_by_xpath(‘//h1’)
browser.find_by_tag(‘h1’)
browser.find_by_name(‘name’)
browser.find_by_id(‘firstheader’)
browser.find_by_value(‘query’)

获取该元素的开始 first_found = browser.find_by_name(‘name’).first
获取该元素的结尾 last_found = browser.find_by_name(‘name’).last
获取该元素的索引 second_found = browser.find_by_name(‘name’)[1]

查找相关连接
links_found = browser.find_link_by_text(‘Link for Example.com’)
links_found = browser.find_link_by_partial_text(‘for Example’)
links_found = browser.find_link_by_href(‘http://example.com’)
links_found = browser.find_link_by_partial_href(‘example’)
获取某个元素的值 browser.find_by_css(‘h1’).first.value

查找div
divs = browser.find_by_tag(“div”)
within_elements = divs.first.find_by_name(“name”)

鼠标移动到某资源 browser.find_by_tag(‘h1’).mouse_over()
鼠标移开某资源 browser.find_by_tag(‘h1’).mouse_out()
双击某元素 browser.find_by_tag(‘h1’).double_click()
鼠标右键某资源 browser.find_by_tag(‘h1’).right_click()
点击相关连接
browser.click_link_by_href(‘http://www.the_site.com/my_link’)
browser.click_link_by_partial_href(‘my_link’)
browser.click_link_by_text(‘my link’)
browser.click_link_by_partial_text(‘part of link text’)

选择 browser.choose(‘some-radio’, ‘radio-value’)
选择项目 browser.check(‘some-check’)
取消选项 browser.uncheck(‘some-check’)
选择下拉菜单 browser.select(‘uf’, ‘rj’)

针对ajax部分
对某个焦点 browser.is_text_present(‘splinter’, wait_time=10)
browser.is_text_not_present(‘text not present’, wait_time=10)
browser.is_text_not_present(‘text not present’, wait_time=10)
直接执行脚本

browser.execute_script('document.getElementById("body").innerHTML="

Hello world!

"')

cookie部分
添加cookie browser.cookies.add({‘whatever’: ‘and ever’})
获取所有cookie browser.cookies.all()
删除cookie值 browser.cookies.delete(‘mwahahahaha’)
删除所有cookie browser.cookies.delete() #deletes all cookies

浏览器状态 browser.status_code.code
获取异常部分 HttpResponseError, e:

后台执行部分
http://splinter.cobrateam.info/docs/drivers/zope.testbrowser.html

实例代码,模拟51job刷新部分(比较复杂,基本模拟了主流的点击操作)。

#!/bin/python
#-*- coding:utf-8 -*-
# Filename:    grab-centreon.py
# Revision:    
# Date:        2014-10-29
# Author:      simonzhang
# web:         www.simonzhang.net
# Email:       simon-zzm@163.com
### END INIT INFO
from splinter import Browser
from time import sleep

url = 'www.51job.com'
name = 'kkkkkkk'
passwd = '9999999'
mybr = Browser()
 
# 按照id发送账号密码
mybr.visit("http://%s" % url)
sleep(2)
mybr.find_by_id('username').fill(name)    
mybr.find_by_id('userpwd').fill(passwd)
# 按照tag顺序点击
mybr.find_by_tag('input').click()
sleep(15)
mybr.find_by_id('window_fans_close').click()
sleep(3)
# 按照css查找按钮,点击开刷新页面
aa = mybr.find_by_css('a.refresh')
aa.click()
sleep(3)
# 直接执行刷新脚本,此部分需要根据自己编号进行修改
mybr.execute_script("Save_RefreshResume('000000','0','http://my.51job.com');")
# 直接找到刷新关闭页面
mybr.execute_script("javascript:Refresh_success.close();Refresh_success_LastUpdate(mystr[1]);")
# 按照连接找到位置进行点击
mybr.click_link_by_href('http://my.51job.com/my/My_SignOut.php')
sleep(2)
# 关闭浏览器
mybr.quit()

发表评论

电子邮件地址不会被公开。 必填项已用*标注