selenium中处理验证码问题:

  • 验证码:

    •   基本作用:可以实现当前访问页面的数据安全性、还可以减少用户的并发数;实现大流量的分流
    •   类型:1.纯数字、纯字母 2.汉字组合 3.数学运算题 4.滑动 5.图片(选不同的、选相同、选给出已知性、成语顺序,汉字顺序......) 6.短信 7.语音 8.邮箱
    •   验证码的实现:
      •   在开发验证码时,必然会有对应的验证码资源库;(通常情况下会有两种:本地资源库、网络资源库)
      •   本地资源:开发会设定相关的验证码的资源信息;通常定义在某种容器类型中;[0,1,2,3,4,5,6,7,8,9,A,......“男”,“女”,“天”,“地”.......]
      •   网络资源:相关的数据全部都是调用第三方接口或者在网络上进行爬取相关数据;
    •   解决验证码:
      •  1.让开发人员将验证码直接屏蔽操作
      •  2.让开发人员提供一个万能验证码
      •  3. 如果是本地资源库图片的形式的话,则可以将服务器存储资源文件夹中所有图片全部删除只留一张
      •  4.打码平台完成
      •  5.使用机器语言学习验证码(比如:光学字符扫描模块(部分))-------需要大量的精力人力物力大量的时间,非一朝一夕可以学会。
  •  通过代码获取验证码:使用第三方扩展模块:PIL(图像处理模块:Python Imaging library python的图像处理库)模块;因为PIL是属于python2.x版本所使用的;在python3.x版本中现如今主要使用的模块是Pillow、Pillow-PIL等
  • 注意:如何需要进行页面截图,并且是截取页面中的某一个部分图片的话,则一定要注意当前计算机的布局填充率(影响截图的范围位置)
  • :
  • 网址:https://python-pillow.org/

因为对应案例的12306这种验证码的方式取消了,下面的代码展示只能参考思想,代码不能直接使用,记住验证码的获取过程(整个页面到只获取验证码图片的过程)

获取验证码的图片验证:windows的页面填充布局会影响截取的效果

demo:不要无脑复制代码 要了解为什么这样子

from selenium import webdriver
from PIL import Image
from selenium.webdriver.common.by import By
class GetCode:
def __init__(self):
self.get_driver=webdriver.Chrome()
self.get_driver.get('初始的地址')
self.get_driver.maximize_window()

#切换到账号的登录
def switch_to_account(self):
self.get_driver.find_element(By.XPATH,"对应登录按钮的Xpath的值").click()

#实现截图
def get_index_image(self):
self.switch_to_account()
self.get_driver.get_screenshot_as_file("index.png")

#获取验证码图片的位置
#声明一个方法获取验证码图片的四个坐标点
def get_code_point(self):
get_code=self.get_driver.find_element(By.ID,'定位验证码图片的ID的参数值')
#获取该对象之后,页面上的对象都存在size/location
get_left=get_code.location["x"]
get_upper=get_code.location["y"]
#获取高、宽
get_right=get_code.size["width"]+get_left
get_lower=get_code.size["height"]+get_upper
return (get_left,get_upper,get_right,get_lower)
def get_code_image(self):
#打开图片
get_index_object=Image.open("index.png")
get_new_iamge=get_index_object.crop(self.get_code_point())
get_new_iamge.save("code.png")

if __name__ == '__main__':
get=GetCode()
get.get_index_image()
get.get_code_image()

selenium中处理验证码问题1-获取验证码图片的更多相关文章

  1. ASP.NET中图片验证码与js获取验证码的值

    现在的程序中,为了防止用户恶意点击,我们一般都会加上验证,现在比较普遍的是加上图片验证码或者手机短信验证.验证码一般都是防机器不防人,有效的防止了恶意点击. 那么在webform中如何生成动态的图片验 ...

  2. android发送短信验证码并自动获取验证码填充文本框

    android注册发送短信验证码并自动获取短信,截取数字验证码填充文本框. 一.接入短信平台 首先需要选择短信平台接入,这里使用的是榛子云短信平台(http://smsow.zhenzikj.com) ...

  3. Android中的ImageView的getDrawableCache获取背景图片的时候注意的问题

    获取ImageView的背景图片使用getDrawableCache方法,不要使用getDrawable方法,后者获取不到图片的. 1.在调用imageView.getDrawableCache()之 ...

  4. Android 获取验证码倒计时实现

    Android 获取验证码倒计时实现 2017年10月24日 09:55:41 FBY展菲 阅读数:2002    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  5. JS获取验证码后倒计时不受刷新及关闭影响

    HTML部分 <input type="button" id="code_btn" value="获取验证码"> JS部分 // ...

  6. selenium+Python3.5获取验证码

    其中PIL为Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. PIL第三方库安装 pip install PI ...

  7. Selenium获取动态图片验证码

    Selenium获取动态图片验证码 关于图片验证码的文章,我想大家都有一定的了解了. 在我们做UI自动化的时候,经常会遇到图片验证码的问题. 当开发不给咱们提供万能验证码,或者测试第三方网站比如知乎的 ...

  8. iOS项目中获取验证码倒计时及闪烁问题解决方案

    -(void)startTime{ __block int timeout= 59; //倒计时时间 dispatch_queue_t queue = dispatch_get_global_queu ...

  9. angular中service封装$http做权限时拦截403等状态及获取验证码倒计时、跨域问题解决

    封装$http.做权限时拦截403等状态及获取验证码倒计时: 拦截接口返回状态 var app = angular.module('app'); app.factory('UserIntercepto ...

  10. Android中注册获取验证码倒计时按钮

    public class CountDownTimerUtils extends CountDownTimer { private TextView mTextView; /** * @param t ...

随机推荐

  1. ubuntu上安装meson & 如何使用meson编译C代码

    一· 搭建meson环境并简单编译: 1. 什么是meson Meson 旨在开发最具可用性和快速的构建系统.提供简单但强大的声明式语言用来描述构建.原生支持最新的工具和框架,如 Qt5 .代码覆盖率 ...

  2. 收集的sql经典语句

    经典SQL语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serve ...

  3. char和int的类型转换

    char类型是16位的,底层采用unicode编码保存.char类型是可以直接赋值给int类型的,因为是16位到32位低到高.举个例子比如int i='1';打印i的值是49.char类型跟int类型 ...

  4. 2月27日Android开发学习

    App工程目录结构 App工程分为两个层次,第一个层次是项目,另一个层次是模块. 模块依附于项目,每个项目至少有一个模块.一般而言的"编译运行App",指的是运行某一模块,而非运行 ...

  5. AcWing 66. 两个链表的第一个公共结点 (2012算法题)

    题目: 输入两个链表,找出它们的第一个公共结点. 当不存在公共节点时,返回空节点. 数据范围 链表长度 [1,2000]. 保证两个链表不完全相同,即两链表的头结点不相同. 样例  给出两个链表如下所 ...

  6. VUE项目中检测网页滑动注意事项

    一.this.$nextTick(function () {             window.addEventListener('scroll', this.onScroll, true)   ...

  7. NodeJS - XSS-Attribute

    参考:https://owasp-skf.gitbook.io/asvs-write-ups/cross-site-scripting-attribute-xss-attribute/kbid-3-x ...

  8. 运行python脚本报错SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

    运行python脚本报错 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes  in position 2-3: ...

  9. NFS只能挂载为nobody的解决办法

    方法一 mount中指定参数 mount -t nfs -o vers=3 192.168.23.23:/data1 /data1 这种方法不推荐,但可以解决临时挂载的需求 方法二 cat /etc/ ...

  10. Java学习笔记-BigDecimal类型

    1.介绍 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更 ...