Python利用splinter实现浏览器自动化操作方法
利用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实现浏览器自动化操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
- C++ 隐式类型转换
- IE漏洞调试之CVE-2013-3893
- C++ STL之迭代器注意事项
- 设计3D标签为什么要有一个字符间隙tracking?为什么要重写getPrefferedSize()?画三遍的顺序有讲究
- C++STL之整理算法
- Offset2lib攻击测试:看我如何全面绕过64位Linux的内核防护
- C++ STL之查找算法
- 教你一招 | Python3新特性(一) :字符串
- C++ STL之set的基本操作
- Android ClassLoader详解
- 揭秘银行木马Chthonic:网银大盗ZeuS的最新变种
- C++STL之map的基本操作
- android EventBus 3.0使用指南
- C++ STL之deque的基本操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【设计模式系列】行为型之状态模式
- PHP运行模式
- 马上2021年了线性表你还不知道原理?给老王整的明明白白
- 分治-芯片测试问题
- 你说啥什么?注解你还不会?
- Mybatis系列第五讲 Mapper接口多种方式传参详解、原理、源码解析
- Mybatis系列第十讲 动态SQL,这么多种你都会?
- 3D图形学线代基础
- Splash抓取jd
- codeforces 1395C(暴力枚举)
- 不到100行代码搞定Python做OCR识别身份证,文字等各种字体
- codeforces 1389B(贪心)
- 又一个自动生成项目目录组件tree-cli,快速生成Readme项目结构
- 用Vue CLI创建uni-app,摆脱HBuilder,npm命令行运行及发布
- codeforces 1133D(map+精度控制)