WebUI自动化测试中关于图片验证码的解决方法
关于怎么识别图片中的文字,传送门:https://www.cnblogs.com/teangtang/p/16157880.html
实现代码如下:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author:特昂糖
import pytesseract
from PIL import Image
from selenium import webdriver
import time as t driver=webdriver.Chrome()
driver.get('*******************')
driver.maximize_window()
driver.implicitly_wait(30)
t.sleep(2) driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div[3]/img').screenshot('1.png') #截取验证码并保存到本地 ver=pytesseract.image_to_string(Image.open('1.png')) #识别截图中的字符串 with open('index.txt',"w") as f: #将识别出的字符串写入到文件中
f.write("".join(ver.split())) #因为识别到的文字有空格,所有我这里做了去除空格的处理 with open("index.txt","r") as f: #将写入的字符串读取出来并赋值给a
a=f.read() driver.find_element_by_xpath('//*[@id="inputCode"]').send_keys(ver) #将读取到的字符串填写到验证码输入框
t.sleep(3)
driver.quit()
那么问题来了,文字识别的准确率不是100%我们应该怎么去判断是否登录成功呢?
比如我在测试代码中做了一个if循环,判断URL是不是还是登录页面的地址,如果是,那就重新识别一下,代码如下:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author:特昂糖
import pytesseract
from PIL import Image
from selenium import webdriver
import time as t driver=webdriver.Chrome()
driver.get('http://****************')
driver.maximize_window()
driver.implicitly_wait(30)
t.sleep(2) driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div[3]/img').screenshot('1.png') #截取验证码并保存到本地 ver=pytesseract.image_to_string(Image.open('1.png')) #识别截图中的字符串 with open('index.txt',"w") as f: #将识别出的字符串写入到文件中
f.write("".join(ver.split())) #因为识别到的文字有空格,所有我这里做了去除空格的处理 with open("index.txt","r") as f: #将写入的字符串读取出来并赋值给a
a=f.read() driver.find_element_by_xpath('//*[@id="username"]').send_keys("******") #输入用户名
t.sleep(1)
driver.find_element_by_xpath('//*[@id="password"]').send_keys("******") #输入密码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="inputCode"]').send_keys(ver) #输入验证码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="formLogin"]/div[5]/div/div/span/button') #点击登录
t.sleep(2)
if driver.current_url=='http://**************.com': #如果URL为登录页面的URL driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div[3]/img').screenshot('1.png') # 截取验证码并保存到本地
ver = pytesseract.image_to_string(Image.open('1.png')) # 识别截图中的字符串
with open('index.txt', "w") as f: # 将识别出的字符串写入到文件中
f.write("".join(ver.split())) # 因为识别到的文字有空格,所有我这里做了去除空格的处理
with open("index.txt", "r") as f: # 将写入的字符串读取出来并赋值给a
a = f.read() driver.find_element_by_xpath('//*[@id="username"]').send_keys("******") # 重新输入用户名
t.sleep(1)
driver.find_element_by_xpath('//*[@id="password"]').send_keys("********") # 重新输入密码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="inputCode"]').send_keys(ver) # 重新输入验证码
t.sleep(1)
driver.find_element_by_xpath('//*[@id="formLogin"]/div[5]/div/div/span/button') # 点击登录
t.sleep(2)
else:
pass
driver.quit()
WebUI自动化测试中关于图片验证码的解决方法的更多相关文章
- appium自动化测试中获取toast消息的解决方法【转】
http://blog.csdn.net/hqzxsc2006/article/details/50036911 待实践.. 解决方法:appium下切换selendroid模式去获取Android的 ...
- 关于验证码在IE中不刷新的快速解决方法
今天在做验证码的时候发现在IE中,验证码不会刷新,而谷歌等其他浏览器没有问题,所以我想到应该是缓存问题,因为IE默认的设置是如果访问地址没变化就不会去获取而是加载缓存中的内容 所以解决方案就是在验证码 ...
- 网站启动SSL, http变为https后,session验证码错误解决方法
网站启动SSL, http变为https后,session验证码错误解决方法 最近公司需要后台启动安全证书,证书安装完毕后,后台老提示 验证码错误,经过几天的研究,此问题已经得到有效解决,现把方法 ...
- dedecms织梦手机端文章内容页图片不能自适应解决方法
dedecms织梦手机端文章内容页图片不能自适应解决方法: 方法一修改手机端文章页模板代码: 找到并打开手机端的文章内容页模板,将里面的{dede:field.body/}标签修改一下,改为如下的标签 ...
- VS2012中丢失ArcGIS模板的解决方法
VS2012中丢失ArcGIS模板的解决方法 由于ArcGIS10.0(for .NET)默认是用VS2010作为开发工具的,所以在先安装VS2012后装ArcGIS10.0 桌面版及ArcObjec ...
- js中style.display=""无效的解决方法
本文实例讲述了js中style.display=""无效的解决方法.分享给大家供大家参考.具体解决方法如下: 一.问题描述: 在js中我们有时想动态的控制一个div显示或隐藏或更多 ...
- PIL在windwos系统下Image.show无法显示图片问题的解决方法
环境:1.win7 64位 2.python 2.7.8 3.PIL-1.1.7.win32-py2.7 在运行一下例子时候出现问题: #-*-coding:utf-8-*- __author__ = ...
- java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...
- SpringBoot拦截器中无法注入bean的解决方法
SpringBoot拦截器中无法注入bean的解决方法 在使用springboot的拦截器时,有时候希望在拦截器中注入bean方便使用 但是如果直接注入会发现无法注入而报空指针异常 解决方法: 在注册 ...
- asp.net url址址中中文汉字参数传递乱码解决方法
中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirec ...
随机推荐
- [GPT] Linux 如何查看 crontab 的运行记录
要查看crontab的运行记录,可以使用以下命令: $ grep CRON /var/log/syslog 或者 $ tail /var/log/syslog 这将在 /var/log/syslo ...
- [Go] 获得一个整数范围区间的随机数 (golang)
示例:0,1 随机 package main import "fmt" import "math/rand" import "time" f ...
- 数仓OLAP技术
数据应用,是真正体现数仓价值的部分,包括且又不局限于 数据可视化.BI.OLAP.即席查询,实时大屏,用户画像,推荐系统,数据分析,数据挖掘,人脸识别,风控反欺诈,ABtest等等 OLAP(On-L ...
- 【动画进阶】巧用 CSS/SVG 实现复杂线条光效动画
最近,群里在讨论一个很有意思的线条动画效果,效果大致如下: 简单而言,就是线条沿着不规则路径的行进动画,其中的线条动画可以理解为是特殊的光效. 本文,我们将一起探索,看看在不使用 JavaScript ...
- 轻量级.net standard微信支付登录Nuget开源库
我个人编写的库,在我个人网站,小程序等很多地方都在使用中,大家可以搜索小程序 什邡市宅猫君网络工作室 或者到我的网站 store.zhaimaojun.cn 去体验支付和登录效果. 本库主要实现了na ...
- 03. x86基础指令
[说明] x86指令代码语法 制作程序时,指令数据使用代码表示,这些指令代码称为汇编代码,汇编代码由汇编器转换为对应的指令数据和数学数据. x86指令代码主要有两种语法:英特尔语法.AT&T语 ...
- ansible(12)--ansible的cron模块
1. cron模块 功能:管理被控端计划任务: 主要参数如下: 参数 说明 name 定时任务基本描述 job 定时任务要执行的命令 minute 分 hour 小时 day 日 month 月 we ...
- OpenVoiceV2本地部署教程,苹果MacOs部署流程,声音响度统一,文字转语音,TTS
最近OpenVoice项目更新了V2版本,新的模型对于中文推理更加友好,音色也得到了一定的提升,本次分享一下如何在苹果的MacOs系统中本地部署OpenVoice的V2版本. 首先下载OpenVoic ...
- RediSearch的简单使用与总结
前言 之前就有考虑过想要研究下RediSearch,号称高性能全文索引的功能,这几天闲来无事调研了一番. RediSearch 介绍 RediSearch 是 Redis Labs 提供的一款强大且高 ...
- 基于webapi的websocket聊天室(二)
上一篇 - 基于webapi的websocket聊天室(一) 消息超传缓冲区的问题 在上一篇中我们定义了一个聊天室WebSocketChatRoom.但是每个游客只分配了400个字节的发言缓冲区,大概 ...