1. 简介
微信红包是现今非常流行的一个功能,但是手动领取红包会很麻烦,因此有必要对它进行自动化测试。本文介绍基于Python实现微信收红包自动化测试脚本的测试用例。
2. 环境搭建
2.1 安装Appium
Appium是一种开源工具,用于在iOS和Android平台上进行原生应用的自动化测试。通过它,我们可以使用Python编写自动化测试脚本。在开始编写之前,必须确保已安装Appium环境。
Appium的安装可以在终端中使用以下命令完成:
npm install -g appium
2.2 安装Appium Python客户端
Appium Python客户端是用于Appium的Python接口。通过它,我们可以使用Python编写自动化测试脚本。
安装Appium Python客户端可以在终端中使用以下命令完成:
pip install Appium-Python-Client
2.3 安装Python模块
我们使用selenium、requests和unittest模块来编写自动化测试脚本。以下是三个模块的安装命令:
pip install selenium
pip install requests
pip install unittest
3. 测试脚本编写
编写测试脚本需要显式地打开微信APP并登录,访问“微信支付”界面,点击“我的钱包”按钮、打开“红包”页面,然后领取所需红包。如果遇到手气不好的情况,可以通过该脚本实现一键抢红包。
3.1 登录微信
在测试脚本中,首先需要启动微信APP并完成登录操作。利用selenium和Appium的WebDriver()函数可以打开微信并定位到登录框中输入用户名和密码的元素。
接下来,需要定位“登录”按钮,并使用click()方法单击该按钮以完成登录。
下面是登录微信的代码:
from appium import webdriver
import unittest
import time
class TestLogin(unittest.TestCase):
def setUp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0'
desired_caps['deviceName'] = 'emulator-5554'
desired_caps['appPackage'] = 'com.tencent.mm'
desired_caps['appActivity'] = '.ui.LauncherUI'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(5)
def tearDown(self):
self.driver.quit()
def test_login(self):
self.driver.find_element_by_id('com.tencent.mm:id/d75').click() # 点击登录
self.driver.find_element_by_id('com.tencent.mm:id/hz').send_keys('your_wechat_name') # 输入微信号
self.driver.find_element_by_id('com.tencent.mm:id/bv3').send_keys('your_wechat_password') # 输入密码
self.driver.find_element_by_id('com.tencent.mm:id/d7f').click() # 点击登录
3.2 访问“微信支付”界面
通过search_box_locator()函数可以实现跳转到“微信支付”界面。
下面是实现访问“微信支付”界面的代码:
def search_box_locator(self):
self.driver.find_element_by_id('com.tencent.mm:id/al').click() # 进入搜索框
self.driver.find_element_by_id('com.tencent.mm:id/kh').send_keys('微信支付') # 在搜索框中输入“微信支付”
time.sleep(3)
self.driver.find_element_by_id('com.tencent.mm:id/c_').click() # 进入“微信支付”界面
time.sleep(5)
3.3 进入“我的钱包”界面
通过访问“微信支付”界面,可以找到“我的钱包”按钮。单击此按钮可以进入“我的钱包”界面。
下面是进入“我的钱包”界面的代码:
def money_box_locator(self):
self.driver.find_element_by_id('com.tencent.mm:id/rc').click() # 进入“我的钱包”界面
time.sleep(5)
3.4 进入“红包”页面
在“我的钱包”界面中,单击“红包”按钮可以进入“红包”页面。
下面是进入“红包”页面的代码:
def red_packet_locator(self):
self.driver.find_element_by_android_uiautomator('text("红包")').click() # 进入“红包”界面
time.sleep(5)
3.5 领取红包
在“红包”页面中可以看到可领取的红包。我们使用webdriver的find_elements_by_android_uiautomator()方法来获取所有可领取的红包元素,然后按顺序依次领取。
下面是领取红包的代码:
def snatch_red_packet(self):
while True:
try:
red_packet_list = self.driver.find_elements_by_android_uiautomator('text("微信红包")')
if len(red_packet_list) == 0:
break
else:
red_packet_list[0].click() # 点击红包
time.sleep(2)
if self.driver.find_element_by_id('com.tencent.mm:id/aum').text == '已过期':
self.driver.back() # 如果红包已过期,则返回
elif self.driver.find_element_by_id('com.tencent.mm:id/ckj').text == '查看领取详情': # 如果红包已被领取,则返回
self.driver.back()
else: # 正常领取红包
self.driver.find_element_by_id('com.tencent.mm:id/ckj').click() # 领取红包
time.sleep(1)
self.driver.back()
except:
break
4. 测试用例执行
当测试脚本编写完毕后,可以通过执行命令来执行测试用例。
以下是执行测试用例的代码:
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(TestLogin)
unittest.TextTestRunner(verbosity=2).run(suite)
TestLogin().search_box_locator()
TestLogin().money_box_locator()
TestLogin().red_packet_locator()
TestLogin().snatch_red_packet()
5. 总结
本文介绍了基于Python实现微信收红包自动化测试脚本的测试用例。测试脚本的主要功能是登录微信APP、访问“我的钱包”界面、进入“红包”页面,然后自动领取红包。通过该脚本,可以减轻手动领取红包所带来的麻烦。