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字典操作简明总结
Apr 13 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
IntelliJ IDEA安装运行python插件方法
Dec 10 Python
python从子线程中获得返回值的方法
Jan 30 Python
python实现词法分析器
Jan 31 Python
opencv与numpy的图像基本操作
Mar 08 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
Python动态声明变量赋值代码实例
Dec 30 Python
Python matplotlib画曲线例题解析
Feb 07 Python
python标准库OS模块函数列表与实例全解
Mar 10 Python
python自动从arxiv下载paper的示例代码
Dec 05 Python
python 三种方法提取pdf中的图片
Feb 07 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
Laravel 5框架学习之表单
2015/04/08 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
详解Python中的strftime()方法的使用
2015/05/22 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
python实现感知器算法(批处理)
2019/01/18 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Python 变量的创建过程详解
2019/09/02 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
开除员工通知
2015/04/22 职场文书
五年级语文教学反思
2016/03/03 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang