Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)


Posted in Python onJune 28, 2019

从最简单的Web浏览器的登录界面开始,登录界面如下:

Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)

进行Web页面自动化测试,对页面上的元素进行定位和操作是核心。而操作又是以定位为前提的,因此,对页面元素的定位是进行自动化测试的基础。

页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等。webdriver就是利用元素的这些属性来进行定位的。

可以用于定位的常用的元素属性:

id

name

class name

tag name

link text

partial link text

xpath

css selector

对应于webdriver中的定位方法分别是:

driver.find_element_by_name()——最常用,简单

driver.find_element_by_id()——最常用,简单

driver.find_element_by_class_name()

driver.find_element_by_tag_name()——最不靠谱

driver.find_element_by_link_text()——定位文字连接好用

driver.find_element_by_partial_link_text()——定位文字连接好用

driver.find_element_by_xpath()——最灵活,万能

driver.find_element_by_css_selector()

上面是定位一个元素的方法,相应的webdriver也有定位一组元素的方法:

driver.find_elements_by_name() 
driver.find_elements_by_id() 
driver.find_elements_by_class_name() 
driver.find_elements_by_tag_name() 
driver.find_elements_by_link_text() 
driver.find_elements_by_partial_link_text() 
driver.find_elements_by_xpath() 
driver.find_elements_by_css_selector()

由界面可以看出,主要需要三个输入数据,首先我们要掌握F12查看页面元素。

右键文本框查看元素(以用户名文本框为例)

Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)

在该文本框中输入用户名“XXX”,代码如下:

driver.find_element_by_id("os_username").send_keys("XXX")

密码同理。

验证码操作较为复杂,需要用到PIL+tesseract+image代码库,需提前准备。我的思路是首先采用driver.save_screenshot(“test.png”)截取该完整登录界面并保存,而后选取验证码区域进行截取保存,区域选取采用region = (left.x, left.y, right.x, right.y),其中(left.x,left.y)为左上角像素坐标,(right.x,right.y)为右下角像素坐标,采用nimg = img.crop(region)来截取验证码区域并用nimg.save(“new_test.png”)来保存。最后采用pytesseract.image_to_string(image)方法将图片验证码转换成字符串。具体代码实现详见附后代码。

三个输入完成后,即是登录按钮的点击,F12查看元素如图:

代码如下:

Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)

driver.find_element_by_class_name("btnSub").click()

此时即可完成登录,注意,该识别验证码的方法只能识别简单验证码,过于复杂的识别会有错误。

注:若登陆名为汉字需要使用

G = u”登录名” 
driver.find_element_by_id(“os_username”).send_keys(G)

详细代码

# -*- coding: utf-8 -*-
 #coding=UTF-8

 from selenium import webdriver
 from PIL import Image
 import pytesseract
 driver = webdriver.Chrome() 
 driver.get('http://XXX') #该处为具体网址
 driver.refresh()   #刷新页面
 driver.maximize_window() #浏览器最大化
 driver.save_screenshot("test.png")

 img = Image.open("test.png")
 region = (940, 355, 1030, 385)#根据具体情况修改
 nimg = img.crop(region)
 nimg.save("new_test.png")

 image = Image.open("new_test.png")
 vcode = pytesseract.image_to_string(image)
 driver.find_element_by_id("os_username").send_keys("XX
X")
 driver.find_element_by_id("password").send_keys("XXX")
 driver.find_element_by_id("RandomCode").send_keys(vc
ode)
 driver.find_element_by_class_name("btnSub").click()

以上这篇Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的几种开发工具介绍
Mar 07 Python
Python修改Excel数据的实例代码
Nov 01 Python
Python中的高级数据结构详解
Mar 27 Python
Python实现的飞速中文网小说下载脚本
Apr 23 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
Django的信号机制详解
May 05 Python
快速查询Python文档方法分享
Dec 27 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
python如何爬取个性签名
Jun 19 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 #Python
Pyqt QImage 与 np array 转换方法
Jun 27 #Python
pyqt5 使用cv2 显示图片,摄像头的实例
Jun 27 #Python
对python中GUI,Label和Button的实例详解
Jun 27 #Python
python 整数越界问题详解
Jun 27 #Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
Jun 27 #Python
python 反编译exe文件为py文件的实例代码
Jun 27 #Python
You might like
WordPress伪静态规则设置代码实例
2020/12/10 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
python实现简单爬虫功能的示例
2016/10/24 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
python实现xlsx文件分析详解
2018/01/02 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
python中id函数运行方式
2020/07/03 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
作为网站管理者应当如何防范XSS
2014/08/16 面试题
制衣厂各岗位职责
2013/12/02 职场文书
简历自我评价模版
2014/01/31 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
《手指教学》反思
2014/02/14 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
《泉水》教学反思
2014/04/11 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
防火标语大全
2014/10/06 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
校运会宣传稿大全
2015/07/23 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫