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 ...
随机推荐
- [FAQ] PHP+Nginx 架构网站 502 和 504 问题
502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应.504 Gateway Time-out:作为网关或者代理工作的服务器尝试执行请求时,未能及时 ...
- WPF 调试依赖属性变更方法
本文告诉大家如何调试 WPF 的某个依赖属性被变更的方法 在 WPF 里面,所有的依赖属性都有带通知的功能,通过带通知的功能,可以在通知里加上断点,通过调用堆栈了解是哪个模块调用的 对依赖属性添加通知 ...
- 迁移 dotnet 6 提示必须将目标平台设置为 Windows 平台
我在迁移一个古老的项目为 .NET 6 框架,但是 VS 提示 error NETSDK1136 如果使用 Windows 窗体或 WPF,或者引用使用 Windows 窗体或 WPF 的项目或包,则 ...
- aliyun全站DCDN刷新--Django
1.编写原因: 由于登录到阿里云DCDN,需要登录加打开各种页面,导致推送一次感觉非常麻烦,所以编写(网上以有很多可以借鉴) 2.基础环境 # 所需模块 pip install aliyun-pyth ...
- Codeforces Round 932 (Div. 2) ABCD
A. Entertainment in MAC 题意:给定字符串 \(S\),有两种操作,每次操作其中之一: 把 \(S\) 变为 \(S\) 的翻转 \(T\). 把 \(S\) 变为 \(S + ...
- Solution Set - 组合计数
CF40E Number Table Link&Submission. 显然 \(n,m\) 奇偶性不同时无解.奇偶性相同时,假设有一行全为空,剩下每行至少一个有空,则除这些位置外没有限制的位 ...
- Git——分支管理(2)
Git--分支管理(2) 提示:图床在国外且动图比较多的情况下,需要时间加载. 目录: 目录 Git--分支管理(2) 提示:图床在国外且动图比较多的情况下,需要时间加载. 目录: Git基础 Git ...
- 小程序中 canvas 的图片不支持 base64 格式
首先使用 wx.base64ToArrayBuffer 将 base64 数据转换为 ArrayBuffer 数据,使用FileSystemManager.writeFile 将 ArrayBuffe ...
- C语言:将txt文件的单词导入链表&&删除链表重复单词
文章目录 前言 主要分为两个实现部分,按个人需求浏览 首先明确几个任务 先过一遍如何操作的流程. ①全局变量和结构体代码部分 ②实现:将文件单词导入链表 a: 寻找txt文件中最长单词的函数 b: 导 ...
- pageoffice在线打开word文件加盖电子印章
一.加盖印章的 js 方法 js方法 二.常见使用场景 1.常规盖章.弹出用户名.密码输入框,选择对应印章. 点击盖章按钮弹出用户名密码登录框,登录以后显示选择电子印章. document.getEl ...