返回

自动化测试神器appium获取短信图片验证码的绝妙方案

闲谈

前言

自动化测试已经成为软件开发中不可或缺的一环,而appium无疑是移动端自动化测试的利器。但是,在实际测试过程中,我们经常会遇到获取短信验证码和图片验证码的难题。本文将针对此问题,提供三种行之有效的解决方案。

方法一:通过通知栏获取短信验证码

这种方法适用于安卓手机,步骤如下:

  1. 确保手机已开启通知栏权限。
  2. 使用appium启动要测试的应用。
  3. 发送短信验证码到手机。
  4. 在手机上拉下通知栏,找到短信验证码通知。
  5. 使用appium获取通知栏的内容。
  6. 解析验证码并将其存储到变量中。
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手机,步骤如下:

  1. 使用appium截图短信验证码页面。
  2. 使用图像识别工具识别验证码图片。
  3. 解析验证码并将其存储到变量中。
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手机,步骤如下:

  1. 使用HTTP请求工具向短信验证码接口发送请求。
  2. 解析验证码并将其存储到变量中。
import requests

# 发送HTTP请求到短信验证码接口
response = requests.get('https://example.com/api/v1/sms/验证码')

# 解析验证码并将其存储到变量中
验证码 = response.json()['验证码']

# 使用验证码进行后续测试

结语

以上就是如何在自动化测试中使用python和appium来获取短信和图片验证码的三种方法。希望这些方法能够帮助您解决实际测试中的难题,让您的自动化测试更加高效。