返回
自动化测试神器appium获取短信图片验证码的绝妙方案
闲谈
2023-09-18 22:26:44
前言
自动化测试已经成为软件开发中不可或缺的一环,而appium无疑是移动端自动化测试的利器。但是,在实际测试过程中,我们经常会遇到获取短信验证码和图片验证码的难题。本文将针对此问题,提供三种行之有效的解决方案。
方法一:通过通知栏获取短信验证码
这种方法适用于安卓手机,步骤如下:
- 确保手机已开启通知栏权限。
- 使用appium启动要测试的应用。
- 发送短信验证码到手机。
- 在手机上拉下通知栏,找到短信验证码通知。
- 使用appium获取通知栏的内容。
- 解析验证码并将其存储到变量中。
import time
from appium import webdriver
# 启动要测试的应用
desired_caps = {
'platformName': 'Android',
'platformVersion': '11',
'deviceName': 'Pixel 2 XL',
'appPackage': 'com.android.mms',
'appActivity': '.ui.ConversationList'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 发送短信验证码到手机
driver.send_sms('1234567890', 'This is a test message')
# 等待短信验证码到达
time.sleep(30)
# 获取通知栏的内容
notifications = driver.find_elements_by_id('android:id/notification_main_column')
# 找到短信验证码通知
for notification in notifications:
if 'New message from 1234567890' in notification.text:
# 获取验证码
验证码 = notification.text.split(':')[1]
break
# 解析验证码并将其存储到变量中
验证码 = int(验证码)
# 使用验证码进行后续测试
方法二:通过图像识别获取短信验证码
这种方法适用于安卓和iOS手机,步骤如下:
- 使用appium截图短信验证码页面。
- 使用图像识别工具识别验证码图片。
- 解析验证码并将其存储到变量中。
import time
from appium import webdriver
from PIL import Image
import pytesseract
# 启动要测试的应用
desired_caps = {
'platformName': 'Android',
'platformVersion': '11',
'deviceName': 'Pixel 2 XL',
'appPackage': 'com.android.mms',
'appActivity': '.ui.ConversationList'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 发送短信验证码到手机
driver.send_sms('1234567890', 'This is a test message')
# 等待短信验证码到达
time.sleep(30)
# 截图短信验证码页面
driver.save_screenshot('screenshot.png')
# 使用图像识别工具识别验证码图片
image = Image.open('screenshot.png')
验证码 = pytesseract.image_to_string(image)
# 解析验证码并将其存储到变量中
验证码 = int(验证码)
# 使用验证码进行后续测试
方法三:通过HTTP请求获取短信验证码
这种方法适用于安卓和iOS手机,步骤如下:
- 使用HTTP请求工具向短信验证码接口发送请求。
- 解析验证码并将其存储到变量中。
import requests
# 发送HTTP请求到短信验证码接口
response = requests.get('https://example.com/api/v1/sms/验证码')
# 解析验证码并将其存储到变量中
验证码 = response.json()['验证码']
# 使用验证码进行后续测试
结语
以上就是如何在自动化测试中使用python和appium来获取短信和图片验证码的三种方法。希望这些方法能够帮助您解决实际测试中的难题,让您的自动化测试更加高效。