PageObject+Python+Appium

本文介绍了使用PageObject模式结合Python和Appium构建的自动化测试框架。该框架支持unittest参数化、YAML数据维护、Excel测试报告,同时具备多设备并行测试和WebView支持。文章通过详细步骤展示了第一次启动app和登录功能的测试实例,提供代码入口及结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言:

简介

功能

常用目录

配置

实例 - 第一次启动 app

实例 - 登录

代码入口实例

结果展示


前言:

Page Object模式是一种常用的设计模式,用于组织和管理自动化测试脚本中的页面对象。它将页面的元素和操作封装在一个独立的类中,使测试脚本更加模块化、可维护和可重用。

简介

  • 基于 appium+python3 封装的自动化测试框架

功能

  • python3
  • unittest 参数化
  • pageobject
  • 数据维护用的 YMAL
  • excel 的测试报告
  • 支持多设备 andoird 并行
  • 支持 webview

常用目录

  • Base 封装常用方法
  • Log 记录不同设备的操作用例的日志,操作失败的截图
  • PageObject 放 page
  • test 目录写测试用例
  • runner 运行入口

配置

配置 run.yaml

app: Jianshu.apk

配置 devices.yaml

- devices:  emulator-5554
  port: 4724
  config: appium --session-override  -p 4724 -bp 4734 -U  emulator-5554
  platformName: android
- devices: DU2TAN15AJ049163
  port: 4725
  config: appium --session-override  -p 4725 -bp 4735 -U  DU2TAN15AJ049163
  platformName: android

实例 - 第一次启动 app

配置用例 yaml

testinfo:
    - id: test001
      title: 第一次打开
testcase:
    - operate_type: swipeLeft
      time: 4
      element_info: android.widget.ImageView
      find_type: class_name
    - element_info: com.jianshu.haruki:id/tv_enter
      find_type: id
      operate_type: click
check:
    - element_info: com.jianshu.haruki:id/btn_login
      find_type: id

PageObject

class FirstOpen:
    '''
    kwargs: WebDriver driver, String path(yaml配置参数)
    isOperate: 操作失败,检查点就失败
    testInfo:
    testCase:
    '''

    def __init__(self, **kwargs):
        self.driver = kwargs["driver"]
        self.path = kwargs["path"]
        self.operateElement = OperateElement(self.driver)
        self.isOperate = True
        self.testInfo = getYam(self.path)["testinfo"]
        self.testCase = getYam(self.path)["testcase"]


    '''
    操作步骤
    logTe
### PythonAppium 结合使用的自动化测试框架详细教程 #### 一、框架概述 PythonAppium 的结合可以实现移动端应用的自动化测试。通过构建一个完善的自动化测试框架,能够显著提升测试效率并减少人工干预的需求[^1]。 #### 二、环境准备 在开始编写测试框架之前,需要完成以下准备工作: - 安装 Python 环境以及必要的依赖库(如 `Appium-Python-Client`)。 - 配置好 Android SDK 或 iOS 开发工具链。 - 启动本地或远程的 Appium Server 实例以便连接设备和模拟器。 #### 三、核心组件设计 ##### 1. 单元测试框架的选择 对于单元测试部分可以选择像 unittest 或 pytest 这样的成熟解决方案作为基础架构的一部分[^3]。这些框架提供了丰富的断言方法和支持多种插件扩展的能力。 ##### 2. 多线程处理机制 由于每次运行都需要单独实例化一个新的会话(session),因此采用多线程技术是非常重要的。利用 Python 的 threading 模块可以帮助管理多个并发执行的应用程序进程[^4]: ```python import threading def start_appium_server(appium_path): pass # Start server logic here thread = threading.Thread(target=start_appium_server, args=("path_to_appium",)) thread.start() ``` ##### 3. 关键词驱动模型 为了提高可维护性和重用率,推荐实施关键字驱动的方法论。这种方法允许将常用操作封装成易于调用的功能函数集合,并且可以通过简单的配置文件或者表格数据来控制整个流程。 #### 四、实际案例分析 具体实践中可以从零开始逐步建立自己的项目结构目录树;定义清晰的角色分工比如页面对象模式(Page Object Pattern)用于分离UI元素定位逻辑与业务行为描述等等[^2]。下面给出一个简化版的例子展示如何初始化driver对象并与目标应用程序交互: ```python from appium import webdriver desired_caps = { 'platformName': 'Android', 'deviceName': 'emulator-5554', 'appPackage': 'com.example.app', 'appActivity': '.MainActivity' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # Example interaction with an element by ID element = driver.find_element_by_id("button_login") if element.is_displayed(): element.click() driver.quit() ``` #### 五、总结 综上所述,构建基于 PythonAppium 的移动应用自动化测试体系是一项既具挑战又充满乐趣的工作。它不仅考验开发者的技术功底同时也对其解决问题思路提出了更高层次的要求[^2]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值