python实现获取登录验证码图片

摘要:
自动测试登录页面通常存在验证码验证问题。大多数童鞋直接关闭验证码验证。以下是如何获取验证码图像:1.首先获取登录页面图像;2.确定验证码的坐标和大小;3.通过坐标和尺寸捕捉登录页面上的验证码图像;4.将捕获的验证码图像保存为新文件。

  自动化测试登录页面一般都会存在验证码校验问题,大部分童鞋都是直接把验证码校验关闭掉,下面记录的是如何获取验证码图片的方法:

1.首先获取登录页面图片;

2.确定验证码坐标和大小;

3.通过坐标和尺寸在登录页面上截取验证码图片;

4.截取的验证码图片保存为新的文件。

代码实现如下:

from selenium import webdriver
import time
from PIL import Image

file_name = "C:/test.png"

driver = webdriver.Chrome()
driver.get("********")
driver.maximize_window()
time.sleep(2)

# 1.登录页面截图并保存在C:/test.png
driver.save_screenshot(file_name)
# 2.获取图片验证码坐标和尺寸
code_element = driver.find_element_by_xpath(".//*[@id='verifyCodeImg']")
left = code_element.location['x']
top = code_element.location['y']
right = code_element.size['width']+left
height = code_element.size['height']+top
im = Image.open(file_name)
# 3.截取图片验证码
img = im.crop((left, top, right, height))
# 4.截取的验证码图片保存为新的文件
img.save(file_name)
driver.close()

  注:以上方法不是并非能精准获取验证码图片,比如登录验证了嵌套在iframe中,此时的验证码相对坐标位置就是iframe区域,这里就需要先截取整个iframe区域(iframe.png),然后根据验证码坐标位置在获取的iframe图片(iframe.png)上进行截取,最终获得图片验证码;

 验证码识别请查看下一篇博文:Python调用百度OCR识别API实现文字图片识别

免责声明:文章转载自《python实现获取登录验证码图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用PostgreSQL的bytea字段存读取文件及读取出错问题处理bat 脚本常用命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

网页制作技巧:iframe自适应高度

转自:http://www.enet.com.cn/article/2012/0620/A20120620126237.shtml 通过Google搜索iframe 自适应高度,结果5W多条,搜索iframe 高度自适应,结果2W多条。 我翻了前面的几十条,刨去大量的转载,有那么三五篇是原创的。而这几篇原创里面,基本上只谈到如何自适应静的东西,就是没有考虑...

js中iframe的用法

最近遇到的项目总是习惯左边一个树,点击每个树的节点右边出现相应的信息,遇到这种情况用iframe还是很简单的, 例如 : 页面文件 1 @section Tree{ 2 <ul id="tree"> 3 </ul> 4 5 } 6 @section Search 7 { 8 } 9 <i...

js(javascript)与ios(Objective-C)相互通信交互

随着苹果SDK的不断升级,越来越多的新特性增加了进来,本文主要讲述从iOS6至今,Native与JavaScript的交互方法 一、UIWebview && iframe && JavaScript  <=iOS6 iOS6原生没有提供js直接调用Objective-C的方式,只能通过UIWebView的UIWebVi...

跨域大全

正常ajax请求表现 跨域类型: 跨域,指一个域下的文档或脚本试图去请求另一个域下的资源,ajax跨域只是属于浏览器"同源策略"中的一部分,其它的还有: 0)Cookie跨域iframe跨域,LocalStorage跨域 1.) 资源跳转: A链接、重定向、表单提交 2.) 资源嵌入:<link>、<script>、<i...

apex:iframe 调用其他visaulforce page

<apex:page > <apex:iframe src="http://t.zoukankan.com/apex/API_Extjs_app" scrolling="true" /> </apex:page> 可扩展成动态调用...

关于iframe中的js跨站

iframe中的js跨站的问题很是头痛,关于js跨站的方法可以参考 wujiajun1020。 这里结合我遇到的情况讲讲我的处理方法,我的情况是要在各个站点中调用其中某一个站点的登录页,来达到统一登录的目的(这里详述单点登录了)。在不同站点下调用某一个站点的登录页面,想了想还是用iframe吧,iframe还是很强大的。于是用js写了一个遮罩效果的dial...