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比较2个xml内容的方法
May 11 Python
在Python的Django框架中包装视图函数
Jul 20 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
python实现整数的二进制循环移位
Mar 08 Python
python numpy存取文件的方式
Apr 01 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
AUC计算方法与Python实现代码
Feb 28 Python
Python内置函数locals和globals对比
Apr 28 Python
利用Python网络爬虫爬取各大音乐评论的代码
Apr 13 Python
基于Python绘制子图及子图刻度的变换等的问题
May 23 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
小谈php正则提取图片地址
2014/03/27 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
python计算方程式根的方法
2015/05/07 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Tensorflow 多线程设置方式
2020/02/06 Python
python数据爬下来保存的位置
2020/02/17 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
jupyter 添加不同内核的操作
2021/02/06 Python
html5清空画布方法(三种)
2017/10/16 HTML / CSS
德国网上药房:Apotal
2017/04/04 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
工厂采购员岗位职责
2014/04/08 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
详解Python中下划线的5种含义
2021/07/15 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL