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()