python+appium+unittest+HTMLTestRunner——APP端自动化测试

本文详细介绍了如何使用Python的unittest模块配合Appium进行APP自动化测试,并利用HTMLTestRunner生成详细的测试报告,包括环境配置、测试用例编写、执行与结果展示等关键步骤。
from appium import webdriver
from time import sleep
from appium.webdriver.common.touch_action import TouchAction
import HTMLTestRunner
import unittest

class TestAppSettings(unittest.TestCase):

        # 初始化
    def setUp(self):
        # server 启动参数
        desired_caps = {
   
   }
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '5.1.1'
        desired_caps['deviceName'] = 'emulator-5558'
        desired_caps['appPackage'] = 'com.android.settings'
        desired_caps['appActivity'] = '.Settings'
        desired_caps['unicodeKeyboard'] = True
        desired_caps['resetKeyboard'] = True

        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        sleep(2)
    # 用例1
    # 点击WLAN - --修改网络 - -手动代理 - --自行输入值
    def test_WLAN(self):
        self.driver.find_element_by_xpath("//*[(@text='WLAN')]").click()
        # TouchAction(self.driver).long_press(x=300, y=504).perform()
        el = self.driver.find_element_by_id("android:id/title")
        TouchAction(self.driver).long_press(el, duration=5000).release().perform()

        self.driver.find_element_by_xpath("//*[(@text='修改网络')]").click()
        sleep(2)
        self.driver.find_element_by_class_name("android.widget.CheckBox").click()
        self.driver.find_element_by_id("com.android.settings:id/proxy_settings").click()
        sleep(2)
        self
在使用 PythonAppium 进行前自动化测试时,可以通过以下步骤进行实践。 ### 环境搭建 在开始自动化测试之前,需要完成 AppiumPython 的环境搭建。首先,安装 Appium 服务器,它支持 Android、iOS 和 Windows 平台的应用测试。安装完成后,需要配置 Android SDK(适用于 Android 测试)以及 PythonAppium 客户库。可以使用 pip 安装 Appium-Python-Client: ```bash pip install Appium-Python-Client ``` 此外,还需要安装和配置设备模拟器或连接真机设备,以运行测试脚本 [^1]。 ### 编写测试脚本 使用 Python 编写测试脚本时,需要导入必要的库,并初始化 Appium 驱动。以下是一个简单的测试脚本示例,用于启动一个应用并点击一个按钮: ```python from appium import webdriver # 设置设备参数 desired_caps = { 'platformName': 'Android', 'deviceName': 'emulator-5554', 'appPackage': 'com.example.app', 'appActivity': '.MainActivity' } # 初始化 Appium 驱动 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 查找并点击按钮 button = driver.find_element_by_id('com.example.app:id/button') button.click() # 关闭驱动 driver.quit() ``` 此代码段展示了如何设置设备参数、初始化驱动程序、查找元素并执行点击操作 [^1]。 ### Toast 定位 在某些情况下,需要处理应用中出现的 Toast 消息。由于 Toast 是系统级别的控件,因此不能使用常规的控件查找方法。可以通过以下方式定位 Toast 消息: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from appium.webdriver.common.appiumby import AppiumBy # 等待 Toast 出现 toast_element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((AppiumBy.XPATH, "//*[contains(@text, 'Toast Message')]")) ) # 打印 Toast 文本 print(toast_element.text) ``` 这段代码使用了显式等待来查找包含特定文本的 Toast 消息 [^5]。 ### 跨平台测试 Appium 的一大优势是其跨平台能力,可以使用相同的 API 对 iOS、Android 和 Windows 平台进行测试。这意味着可以在不同平台上复用测试代码,从而提高测试效率 [^3]。 ### 测试报告生成 在测试过程中,生成测试报告是非常重要的。可以使用 Python 的 `unittest` 框架结合 `HTMLTestRunner` 来生成 HTML 格式的测试报告。以下是一个简单的示例: ```python import unittest from HTMLTestRunner import HTMLTestRunner class TestApp(unittest.TestCase): def setUp(self): # 初始化 Appium 驱动 self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) def test_example(self): # 测试用例 button = self.driver.find_element_by_id('com.example.app:id/button') button.click() def tearDown(self): # 关闭驱动 self.driver.quit() if __name__ == '__main__': # 加载测试用例 test_case = unittest.TestLoader().loadTestsFromTestCase(TestApp) # 生成 HTML 测试报告 with open('test_report.html', 'w') as f: runner = HTMLTestRunner(stream=f, title='Test Report', description='Test Description') runner.run(test_case) ``` 这段代码展示了如何使用 `unittest` 框架和 `HTMLTestRunner` 生成 HTML 测试报告 [^4]。 ### 相关问题 1. 如何在 Appium 中处理 Android 应用的权限弹窗? 2. Appium 如何支持 iOS 平台的自动化测试? 3. 如何在 Python 中使用 Appium 进行多设备并行测试? 4. 如何在 Appium 测试中实现页面对象模型(Page Object Model)? 5. 如何在 Appium 中处理 WebView 页面的自动化测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值