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 ...
随机推荐
- 基于MaxCompute分布式Python能力的大规模数据科学分析
简介: 如何利用云上分布式 Python 加速数据科学. 如果你熟悉 numpy.pandas 或者 sklearn 这样的数据科学技术栈,同时又受限于平台的计算性能无法处理,本文介绍的 MaxCo ...
- LlamaIndex 探索视频系列
如果您喜欢通过视频学习,现在正是查看我们的"探索 LlamaIndex"系列的好时机.否则,我们建议您继续阅读"理解 LlamaIndex"教程. 自下而上开发 ...
- 2018-8-10-win10-uwp-如何开始写-uwp-程序
title author date CreateTime categories win10 uwp 如何开始写 uwp 程序 lindexi 2018-08-10 19:16:50 +0800 201 ...
- 2019-10-7-WPF-will-break-when-an-exception-be-throw-in-the-StylusPlugIn
title author date CreateTime categories WPF will break when an exception be throw in the StylusPlugI ...
- 全网最详细SpringCloud-实用篇
SpringCloud-实用篇 学习安排 技术分类 1.微服务 ①架构对比 架构 单体架构 分布式架构 描述 将业务的所有功能集中在一个项目中开发,打成一个包部署. 根据业务功能对系统做拆分,每个业务 ...
- 05.Java 方法详解
1.方法的定义及调用 设计方法的原则:一个方法只完成一个功能,有利于后期的扩展 方法的定义: 修饰符(可选) 返回值类型 方法名(参数类型 参数名(可选)){ 方法体 return 返回值; } 2. ...
- 解决Host key verification failed.(亲测有效)
哈喽哇,今天在访问远程服务器的时候,出现了一个小问题. 原因:之前ssh联系过服务器,重置服务器后,再次连接服务器,就会出这个问题. 一.发现问题 问题如下图代码: $ ssh root@108.61 ...
- UE4 绘制Gizmo
Unity的Gizmos可以很方便的在编辑器下进行调试,Unreal中也有一些办法可以达到效果. 本文主要参考:https://zhuanlan.zhihu.com/p/363625037,进行了一些 ...
- HttpWebRequest , HttpWebResponse 调用示例
1, public string sendPost1(string url, string content) { string result = ""; HttpWebReques ...
- CSS——阴影
<!DOCTYPE html> <html> <head> <style> p.one { text-shadow: 3px 5px 5px #FF00 ...