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. python脚本监控定时任务

    1.linux服务器中输入命令 crontab -l 查看当前系统的所有定时任务 2. 输入命令 crontab -e ,然后按"i"进行编辑(可新增.修改定时任务).具体定时任务 ...

  2. AutoCAD2018

    「AutoCAD_2018_SC.exe」https://www.aliyundrive.com/s/GvpR9yg6TWg 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线 ...

  3. latex常用的宏包(转载)

    页面与标题式样 geometry 利用 geometry 可以很方便的设置页面的大小.由于可以自动居中排放页面,自动计算并平衡页面各部分如页眉.页脚.左右边空等的大小,因此只需给出很少的信息就能得到满 ...

  4. Context,多个组件公用的数据传导方法

    三个组件:输入A组件 输出B组件 TestContext组件,数据x. 方法: 输入端(A):     import TestContext from "TestContext组件路径&qu ...

  5. CI框架 between and sql语句

    1.在文档里没有找到关于where() between and 相应的说明 每次组合查询 要么写原生 要么连续调用where方法. 可用以下方式组合 $condition = array(); $co ...

  6. FII-PRA006/010开发板硬件实验一

    FII-PRA006/010开发板硬件实验一 以一位全加器为例介绍如何利用开发板进行板载实验.一位全加器的Verilog代码如下: 1 2 3 4 5 6 7 8 9 10 module fadd1 ...

  7. 游戏内存优化之使用16位纹理/NPOT

    转自:https://blog.csdn.net/oqqQuZi1234567/article/details/41749599 图片文件大小和纹理内存占用是两码事.假设他们是帐篷.图片文件就相当于帐 ...

  8. RKO队——冲刺随笔(4)

    这个作业属于哪个课程 至诚软工实践F班 这个作业要求在哪里 第五次团队作业:项目冲刺 这个作业的目标 记录冲刺计划.要求包括当天会议照片.会议内容以及项目燃尽图(项目进度) 1.昨日进展 对小程序的的 ...

  9. html:表格

    HTML:表格1.表格三标签:(1)<table> 表格(2)<tr>  行(3)<td>  单元格 2.表格的基本语法和结构<table> <t ...

  10. java 1.8 API帮助文档

    链接:https://pan.baidu.com/s/1MNZqIokMDWNZF-nXnoHzxA 提取码:zw13