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. DataTable TO List<T>

    datatable转list<> public IList<T> GetList<T>(DataTable table){IList<T> list = ...

  2. jekyll+github pages

    写在前面 这篇文章记录了我折腾jekyll,github pages的过程,看到别人的 xxxx.github.io,于是我也想搞一个,了解到大都使用的jekyll来生成的.最开始我还不知道可以直接f ...

  3. edge 浏览器部分功能

    模拟打印情况的调试

  4. UCID数据集

    UCID数据集,做实验使用, 免费分享. 自取 链接:https://pan.baidu.com/s/1etMgXShdd_tJFHWbP3ipNw 提取码:62ww

  5. spring-security-oauth2使用遇到的坑

    异常信息为 2021-08-22 14:24:11.086 WARN 17812 --- [ main] ConfigServletWebServerApplicationContext : Exce ...

  6. 字典方法 setdefault()、pprint;迭代、递归的区别

    计算一个字符串中每个字符出现的次数 import pprint message = 'It was a bright cold day in April, ' \ 'and the clocks we ...

  7. Informatica常用组件整理

    1. 表达式转换组件 (expression) expression 属于被动组件类型(passive),是一种行级表达式,不改变数据行数,功能强大,操作简单. 主要在以下情况下应用: 对流入数据的类 ...

  8. Web_Servlet和jsp页面数据交互,通过请求转发在jsp中显示数据

    1.Servlet页面代码 /* 实现jsp页面和sevlet页面的信息交互 */ @WebServlet(urlPatterns = "/aa") public class Js ...

  9. pip 临时切换 国内源

    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

  10. linux关于文件的创建方式

    1:文件的创建方式: mkdir 用于创建目录: 语法: mkdir -p 目录名 举例:创建一个在run目录下的一个demo目录: 可以写成: mkdir  /run/demo   亦可以写成 mk ...