Python利用splinter实现浏览器自动化操作方法


Posted in Python onMay 11, 2018

利用Splinter开发浏览器自动化操作,编写代码比较简单。

案例一:

from splinter import Browser 
 
with Browser() as browser: 
 # Visit URL 
 url = "http://www.google.com" 
 browser.visit(url) 
 browser.fill('q', 'splinter - python acceptance testing for web applications') 
 # Find and click the 'search' button 
 button = browser.find_by_name('btnG') 
 # Interact with elements 
 button.click() 
 if browser.is_text_present('splinter.readthedocs.io'): 
  print("Yes, the official website was found!") 
 else: 
  print("No, it wasn't found... We need to improve our SEO techniques")

第1行 是导入Browser。

Browser是整个测试的基础,你可以把它理解为一个浏览器。

第3行 初始化一个Browser,不加参数的话默认是firefox。

第4行 是命令browser打开"http://google.com"。

第5行 是命令browser使用‘splinter - python acceptance testing for web applications'填充页面中‘name'是‘q'的元素。在Google的首页中,就是那个搜索框。大家可以看一下Google首页的代码。

第6行 是两个命令。第一个是找到‘name'属性为‘btnG'的按钮,第二个是click()也就是点击这个按钮。这个按钮就是Google的搜索按钮。

第8行 是判断页面中是否有‘splinter.cobrateam.info'这个字符串,因为上一步点击了搜索按钮,所以这里搜索的就是跳转之后的页面。当然,大家不用担心网速慢会判断出错,splinter会等页面载入完成再进行下一步的操作。

第13行 是删除browser。

案例二:

这里,我给出自动登录126邮箱的案例。难点是要找到页面的账户、密码、登录的页面元素,这里需要查看126邮箱登录页面的源码,才能找到相关控件的id.

例如:输入密码,密码的文本控件id是pwdInput.可以使用browser.find_by_id()方法定位到密码的文本框,

接着使用fill()方法,填写密码。至于模拟点击按钮,也是要先找到按钮控件的id,然后使用click()方法。

由于代码较简单,我就只在代码中给出注解说明工作原理。

#coding=utf-8 
import time 
from splinter import Browser 
 
def splinter(url): 
 browser = Browser('chrome') 
 #login 126 email websize 
 browser.visit(url) 
 #wait web element loading 
 time.sleep(5) 
 #fill in account and password 
 browser.find_by_id('idInput').fill('xxxxxx') 
 browser.find_by_id('pwdInput').fill('xxxxx') 
 #click the button of login 
 browser.find_by_id('loginBtn').click() 
 time.sleep(8) 
 #close the window of brower 
 browser.quit() 
 
if __name__ == '__main__': 
 websize3 ='http://www.126.com' 
 splinter(websize3)

以上这篇Python利用splinter实现浏览器自动化操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的yield浅析
Jun 16 Python
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
Python提取频域特征知识点浅析
Mar 04 Python
python调用摄像头拍摄数据集
Jun 01 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
Pycharm Git 设置方法
Sep 15 Python
详解matplotlib绘图样式(style)初探
Feb 03 Python
Python爬虫信息输入及页面的切换方法
May 11 #Python
对python-3-print重定向输出的几种方法总结
May 11 #Python
利用Python如何实现数据驱动的接口自动化测试
May 11 #Python
Python数据结构之图的应用示例
May 11 #Python
python 重定向获取真实url的方法
May 11 #Python
基于python 爬虫爬到含空格的url的处理方法
May 11 #Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
May 11 #Python
You might like
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
php对数组排序代码分享
2014/02/24 PHP
linux中cd命令使用详解
2015/01/08 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
轻松实现php文件上传功能
2017/02/17 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
Python设计模式之中介模式简单示例
2018/01/09 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
用python制作个音乐下载器
2021/01/30 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
静态变量和实例变量的区别
2015/07/07 面试题
人民调解员先进事迹材料
2014/05/08 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android