| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> python+appium自动化测试-获取短信+图片验证码 -> 正文阅读 |
|
[开发测试]python+appium自动化测试-获取短信+图片验证码 |
本篇文章主要讲述的是如何自动获取短信验证码和如何自动获取图片验证码,并写入到对应的输入框中(以下均使用微博的找回密码作为示例) 获取短信验证码的方法有三种,如下所示:
以下只写出第一种在通知栏中获取短信内容的方法,后续两种方法会在后面进行分享。 获取图片验证码的方法: 通过百度的OCR文字识别,进行识别获取图片中的字母、文字或数字验证码。 一、获取短信验证码方法:发送短信验证码后,打开手机的通知栏,定位短信内容,将定位到的内容填入到验证码输入框中,核心代码为:
注意:由于我的类中继承了BasePage类,而BasePage类中声明driver是属于WebDriver库(WebDriver库属于Selenium框架),而以上代码中调用的open_notifications()和press_keycode()方法是属于webdriver库(webdriver库属于appium框架),所以需要在该类中导入webdriver类,并在类中将driver声明为webdriver,否则会出现如下图所示错误: 导入和声明的方式如下:
二、申请百度OCR识别接口,下载对应语言的SDK文件在调用百度OCR图片识别前,需要先申请百度通用文字识别接口,申请方法如下: 1.登录百度AI平台,申请百度通用文字识别接口,免费激活AI平台的使用权限百度AI平台网址:https://ai.baidu.com/ 进入开放能力→文字识别→通用文字识别,如下图: 点击立即使用: 创建应用: 创建成功后进入管理应用,能查看创建的应用AppID、API Key、Secret Key,如下图: 2. 查看适用不同平台/语言/功能的SDK文字识别链接:https://ai.baidu.com/sdk#ocr 下载需要语言的SDK: 我使用的是python语言,所以下载的是对应的Python SDK(支持python版本:2.7.+,3.+),下载完成后,安装方式有两种: ①已经安装pip,打开命令提示符,输入以下命令即可
②已经安装setuptools,打开命令提示符,输入以下命令即可
出现下图表示安装成功: 3.文字识别接口说明(参考文档)文字识别接口说明链接:https://ai.baidu.com/ai-doc/OCR/7kibizyfm 或者可以通过上面图片(下载所需语言的SDK)→使用说明→接口说明进入(后续会使用到这篇文档,建议在写脚本前先阅读) 三、图片验证码识别方法:在工程中自动创建一个存放图片的文件夹,再定位图片验证码的控件,截取图片验证码,将截取到的图片使用自动生成的规则的文件名,保存在创建的图片文件夹内,存储后通过百度的OCR文字识别,获取到保存的截图,进行文字识别,再将识别的结果输出到验证码输入框内 注意: 问:为什么要将图片有规则的命名? 答:方便后续查找核对 问:为什么截图保存不能保存在本地磁盘内,而是保存在本地工程目录下方? 答:如果保存图片时使用的是本地固定的磁盘,那别人使用你的代码时就需要修改保存的路径,如果保存在本地工程目录下方,别人就不需要手动创建文件夹,直接运行代码就能自动在工程目录下生成文件夹 1.screenshot.py — 验证码截图,并通过特定的规律保存在特定的文件夹中
2.image_recognition.py — 调用百度OCR文字识别
注意:在调用百度OCR识别需要在运行环境(工程)下安装baidu-aip,安装步骤如下: 打开Setting→Python Interpreter,点击+号 搜索输入:baidu-aip,点击搜索结果列表中第一个,点击install package 在Setting→Python Interpreter页面出现下图,表示安装成功 3.retrieve_password_page.py — 对获取到的图片验证码解析
说明:由于通过百度OCR识别到的内容是一个字典,如下:
通过处理,将以上内容转换为JSON格式,转换后如下图显示: 我们需要获取的是words,所以需要一层一层的获取元素,具体的获取方式是请查看python的字典、元组、列表,可参考菜鸟教程:https://www.runoob.com/python3/python3-dictionary.html 注意:经实验,该种方式对于比较奇葩的图片验证码识别概率低,识别中规中矩的图片验证码成功率较高 4.testcase.py — 测试用例
以上内容有不正确的地方,欢迎大家提出来,谢谢! |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 4:32:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |