python+appium自动化测试获取短信+图片验证码

本篇文章主要讲述的是如何自动获取短信验证码和如何自动获取图片验证码,并写入到对应的输入框中(以下均使用微博的找回密码作为示例)

获取短信验证码的方法有三种,如下所示:

在手机的通知栏中获取短信内容

通过监控手机日志获取短信验证码

通过redis获取短信验证码

以下只写出第一种在通知栏中获取短信内容的方法,后续两种方法会在后面进行分享。

获取图片验证码的方法:

通过百度的OCR文字识别,进行识别获取图片中的字母、文字或数字验证码。

一、获取短信验证码

方法:发送短信验证码后,打开手机的通知栏,定位短信内容,将定位到的内容填入到验证码输入框中,核心代码为:

# 打开手机通知栏

self.driver.open_notifications()

# 获取定位短信内容(封装了元素定位,详细操作可见上一篇PO模式封装的博客)

message = self.find_element(self._message_content)

# 将短信内容转换为text文本

message_content = message.text

# 通过正则匹配短信内容中的验证码(使用r前缀可以自动转义,不需要手动转换字符串,6表示6位数字的验证码)

ver_code = re.findall(r'[\\d]{6}', message_content)

# 关闭通知栏(下面方式为点击手机返回键来关闭通知栏)

self.driver.press_keycode(4)

# 自动填入验证码(将获取到的验证自动填入到验证码输入框中)

self.input_verification_code(ver_code)

注意:由于我的类中继承了BasePage类,而BasePage类中声明driver是属于WebDriver库(WebDriver库属于Selenium框架),而以上代码中调用的open_notifications()和press_keycode()方法是属于webdriver库(webdriver库属于appium框架),所以需要在该类中导入webdriver类,并在类中将driver声明为webdriver,否则会出现如下图所示错误:
在这里插入图片描述
导入和声明的方式如下:

# 导入webdriver

from appium import webdriver

from page.base_page import BasePage

class PhoneLoginPage(BasePage):

# 声明

driver: webdriver = None

二、申请百度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.+),下载完成后,安装方

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值