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实现带验证码网站的自动登陆实现代码
Jan 12 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
Python Logging 日志记录入门学习
Jun 02 Python
Python if语句知识点用法总结
Jun 10 Python
举例讲解Python常用模块
Mar 08 Python
使用python写一个自动浏览文章的脚本实例
Dec 05 Python
Python中url标签使用知识点总结
Jan 16 Python
你可能不知道的Python 技巧小结
Jan 29 Python
python实现银行实战系统
Feb 26 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
python中delattr删除对象方法的代码分析
Dec 15 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类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
解析PHP中的正则表达式以及模式匹配
2013/06/19 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
详解javascript replace高级用法
2019/02/17 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
Python使用post及get方式提交数据的实例
2019/01/24 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
Python新手学习标准库模块命名
2020/05/29 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
七一党建活动方案
2014/01/28 职场文书
就业自我评价
2014/02/04 职场文书
《金子》教学反思
2014/04/13 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
工作失误检讨书
2015/01/26 职场文书
设备技术员岗位职责
2015/04/11 职场文书
网聊搭讪开场白
2015/05/28 职场文书
python爬虫--selenium模块
2021/03/31 Python
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android