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. DP一下,马上出发

    简单DP i.May I ask you for a dance(体舞课软广植入) 这题的状态转移方程为:dp[i][j]=max(dp[i-1][j-1]+a[i][j],dp[i][j-1]);( ...

  2. scala链接mysql

    方法一:链接并操作mysql //链接Mysqlval driver = "com.mysql.jdbc.Driver"val url = "jdbc:mysql://1 ...

  3. 剑指offer:顺时针打印矩阵

    问题描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...

  4. GeoJson

    几何对象.特征对象.特征对象集合.

  5. 肿瘤数据库除了TCGA,还有TCIA--转载

    TCIA就是基于TCGA数据开发的,不同的是TCIA只提供了20个癌种的免疫数据分析. 看网站首页的介绍就知道,这个数据库主要是根据TCGA的二代测序数据开发出来的.这里的20个癌种,点击每个柱子进去 ...

  6. vue 学习笔记(一)

    对于 vue 官网给的教程由浅及深,非常容易上手.我之前有过 react 项目开发经验,对 webpack 打包,脚手架这一类的东西并不陌生.所以也是我上手比较快的原因吧.简单将我在学习 vue 中遇 ...

  7. zookeeper图形化的客户端工具

    追加一个zookeeper图形化的客户端工具: 1.zookeeper图像化客户端工具的下载地址:https://issues.apache.org/jira/secure/attachment/12 ...

  8. 杂记-python

    1.在cmd输入python -V显示当前python的版本信息,一定是大写的V 2.输入python,进入python解释器里面 3.在解释器中,输入exit()或者quit()会退出,一定要加括号 ...

  9. python 学习笔记 3 ----> dive into python 3

    Python内置数据类型 注意: Python可以不需要声明变量的数据类型.它是根据变量的初始赋值情况分析数据类型,并在内部跟踪变量. 比较重要的数据类型: 1 布尔型(Booleans):True. ...

  10. 基于Docker的Mysql主从复制搭建

    来源:https://www.cnblogs.com/songwenjie/p/9371422.html?tdsourcetag=s_pctim_aiomsg   为什么基于Docker搭建? 资源有 ...