selemiun 自动化测试登录验证码处理

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()

原文地址:https://www.cnblogs.com/soft2408/p/9869296.html

时间: 2024-08-28 22:14:28

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

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

日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚本识别的难度也越来越高.这对我们自动化脚本编写带了非常的不便,那么如何解决登录时的验证码问题呢?经常有初学自动化脚本编写的小主们问及此问题. 此文主要针对如何解决自动化测试脚本中含登录态的操作问题,即如何降低验证码对自动化脚本编写过程中的解决方法进行分析和解决,并以实例演示(基于易迅网易迅账号登录)

那些琐碎的知识-----登录验证码

1.新建文件CheckCode.aspx 前台不用写,后台代码为: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControl

C# 登录验证码

基于字符的图片验证码是系统在用户访问页面时随机产生的一个图像,图像中包含数字.字母或其他文字.其中字符序列与背景图像进行信息融合,添加干扰噪声,或对图像进行混杂.扭曲.粘连.变形等处理,以增加图像识别的难度. 图片验证码的生成主要分成两个步骤: 1.生成随机字符串: 2.生成验证码图片. 1 public partial class CheckCodeImageExt : System.Web.UI.Page 2 { 3 protected void Page_Load(object sende

Java实现登录验证码

登录验证码 Servlet /* 从请求中获取数据,获取验证码的session的值转为String类型,?????? 销毁,防止返回后验证码不刷新,重新验证成功?????? 判断验证码是否相同(忽略大小写)?? 相同:创建user对象调用service层的方法验证返回结果是否为空?????? ?为空:创建session:储存错误信息,转发,登录页面显示登录名或密码错误???? ?不为空:创建session:储存用户名,转发,到登录成功页面?????? 不相同:创建session:储存错误信息,登

登录验证码实现(Captcha)

登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验证码.如下图为实现的效果. 实现案例 验证码的实现需要前后端协同,脱离彼此则不可用,故将前后端的实现放在一起,不再另写前端教程. 后端实现 1.添加依赖 打开 kitty-admin 工程,添加maven依赖. pom.xml <!-- kaptcha --> <dependency>

自动化测试--登录页面验证码问题

对于web应 用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来 说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性.但对于测试人员来说,不管是进行性能测试还是自动化测试都是一个 棘手的问题. 下面来谈一下处理验证码的几种方法. 去掉验证码 这是最简单的方法,对于开发人员来说,只是把验证码的相关代码注释掉即可,如果是在测试环境,这样做可省去了测试人员不少麻烦,如果自动化脚

robotframework处理登录验证码

在用robot做ui自动化测试时,经常会遇到登录页面需要输入验证码,由于验证码是动态图片,通过记录cookie的方式来绕过验证码 记录cookie 通过向浏览器中添加cookie 可以绕过登录的验证码,这是比较有意思的一种解决方案.我们可以在用户登录之前,通过add_cookie()方法将用户名密码写入浏览器cookie ,再次访问系统登录链接将自动登录 实例: 1.首先通过chrome自带的F12查看登录时的cookie信息[如果cookie失效,需要实时重新获取] (JSESSIONID=9

thinkphp3.2 实现登录+验证码

1 <?php 2 3 namespace Model; 4 5 use Think\Model; 6 7 class UserModel extends Model { 8 9 function checkNamePwd($mg_name, $mg_password) { 10 //实例化模型User 11 $user = M("User"); 12 //接收控制器传的数据,进行判断是否一致.并且返回 13 $info = $user->getBy_mgname($mg_

SSM+Shiro系统登录验证码的实现

1.验证码生成类: import java.util.Random; import java.awt.image.BufferedImage; import java.awt.Graphics; import java.awt.Font; import java.awt.Color; /** * 验证码生成器类,可生成数字.大写.小写字母及三者混合类型的验证码. 支持自定义验证码字符数量: 支持自定义验证码图片的大小: 支持自定义需排除的特殊字符: * 支持自定义干扰线的数量: 支持自定义验证码