selemiun 自动化测试登录验证码处理
一.软件及插件的安装
1.火狐浏览器版本(55.0(x64 zh-CN):
https://www.cnblogs.com/sandysun/p/7838113.html
插件安装:
(1)firebug
(2)selenim ide
(3)xpath finder
 
2.Python及编辑器安装
(1)Python 3.7.0
(下载火狐驱动geckodriver.exe2.32,保存在Python\py3安装路径中)
pycharm 2018
(2)下载selenium3.14.1(file-setting-project:code-projectinterpreder)
3. 环境以下变量设置的安装路径PATH:
jdk
python3
firebox
tesseract-OCR
 
4.完成以上配置就可以测试简单页面。如需输入验证码,需下载以下插件:
(1).tesseract-OCR(识别图片插件),如果没有这个插件,无法识别图片。
(2).在Pycharm中下载Pillow图片包。
 
二. Pycharm编写以下代码运行
from selenium import webdriver
import time
import pytesseract
from PIL import Image, ImageEnhance
driver = webdriver.Firefox()
driver.maximize_window()
driver.get("https://cas.gzccc.edu.cn/lyuapServer/login")
driver.save_screenshot("D://Python/picture/1.png")
verification = driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div/form/div/div[3]/div[3]/img")
user=driver.find_element_by_xpath("//*[@id=\"username\"]")
passa=driver.find_element_by_xpath("//*[@id=\"password\"]")
shuru = driver.find_element_by_xpath("//*[@id=\"j_captcha_response\"]")
denglu = driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div/form/div/div[4]/input[3]")
location=verification.location
size=verification.size
ran = Image.open("D://Python/picture/1.png")#打开图片
box = (1023,410,1110,450)
ran.crop(box).save("D://Python/picture/2.png")
# 4、获取验证码图片,读取验证码
imageCode = Image.open("D://Python/picture/2.png")
# imageCode.load()
sharp_img = ImageEnhance.Contrast(imageCode).enhance(2.0)#图像增强,二值化
sharp_img.save("D://Python/picture/3.png")
sharp_img.load()  # 对比度增强
time.sleep(2)
#print(sharp_img)
code = pytesseract.image_to_string(sharp_img).strip()#识别图片
# 5、收到验证码,进行输入验证
user.send_keys("??")
passa.send_keys("??")
shuru.send_keys(code)
denglu.click()
time.sleep(3)
driver.quit()
 

selemiun 自动化测试登录验证码处理的更多相关文章

  1. python登录验证码生成及自动化测试规避

    在用django写论坛的时候,需要有登录及注册功能. 故就登录界面后端需要生成随机验证码并传值给前端的代码进行编写如下. 验证码生成png需要调用到python的图形库 生成注册码img import ...

  2. Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题

    日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...

  3. 通过Cookie跳过登录验证码【限cookie不失效有用】

    验证码,相信每个写web自动化测试的同学来说,都是个头疼的事,怎么办呢? 方法还是有的,先说今天这种方式,通过cookie绕过登录验证码 思路: 需要你通过抓包工具抓到你登录的cookie 接下来开始 ...

  4. Cookie跳转登录验证码

    对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的, 对于系统来说使用验证码可以有效果的防止采用机器猜测方 ...

  5. Java实现登录验证码

    登录验证码 Servlet /* 从请求中获取数据,获取验证码的session的值转为String类型,       销毁,防止返回后验证码不刷新,重新验证成功       判断验证码是否相同(忽略大 ...

  6. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十七):登录验证码实现(Captcha)

    登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验 ...

  7. 登录验证码实现(Captcha)

    登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验 ...

  8. Python - WebDriver 识别登录验证码

    Python - WebDriver 识别登录验证码 没什么可说的直接上代码! #-*-coding:utf-8-*- # Time:2017/9/29 7:16 # Author:YangYangJ ...

  9. 基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示

    headers: {"X-CSRFToken": $("[name='csrfmiddlewaretoken']").val()},data:$(". ...

随机推荐

  1. MySQL explain执行计划优化

    https://www.linuxidc.com/Linux/2016-04/129965.htm

  2. ArrayList迭代器源码分析

    集合的遍历 Java集合框架中容器有很多种类,如下图中: 对于有索引的List集合可以通过for循环遍历集合: List<String> list = new ArrayList<& ...

  3. 微信小程序云开发更换云开发环境

    小程序云开发环境初始化默认是第一个环境,但是我们可以指定环境id //app.js App({ onLaunch: function () { if (!wx.cloud) { console.err ...

  4. node中redis重连

    项目node中用到redis ,做了的moudle,但是有个问题,两台redis,一台挂了,redis能自动切换,我的项目却不会自动重连: 查了资料,redis本身是实现了重连机制啊,为什么不自动重连 ...

  5. VBA正则笔记 理解肯定环视

    之前没有理解好,还以为是学习笔记有谬误. 'VBA正则笔记 肯定环视 Public Sub RegExHandle() Dim Regex As Object Dim Mh As Object, On ...

  6. CentOS6.5利用Docker部署ShowDoc

    在Docker中部署ShowDoc 一.安装Docker 1.安装Docker yum install docker 最后出现Complete即可 2.启动服务 # service docker st ...

  7. SpringBoot之profile详解

    SpringBoot中使用配置文件application.properties&application.yml两种方式,在这两种方式下分别对应各自的profile配置方式,同时还存在命令行.虚 ...

  8. ROM、RAM、CPU、CACHE、FLASH的区别

    内存一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE).只不过因为RAM是其中最重要的存储器,所以通常所说的内存即指电脑系统中的RAM. RAM要求每时 ...

  9. Mock.js常用占位符——Basic、Date、Color

    1. Basic 在通过占位符引用方法时, Mock.mock('@boolean')  : Mock.mock('@boolean()')  都可以调用方法 方法 含义 使用举例 Random.bo ...

  10. h5软键盘弹起 底部按钮被顶起问题解决

    解决思路: 当键盘弹起时隐藏掉按钮,键盘隐藏时按钮显示 监测键盘是否弹起(浏览器页面是否发生变化) 代码: 1.定义一个底部按钮 <div class="returnbtn" ...