Appium基础操作&元素定位实操入门

本文介绍了Appium的基础操作,包括判断应用安装、获取包名和界面名、安装卸载应用以及元素定位。在元素定位部分,讲解了通过ID、XPath和class_name定位元素的方法,并提供了代码示例。
摘要由CSDN通过智能技术生成

一、基础操作

  • 1、安装和配置:包括安装 Appium 服务器、设置环境变量等。
  • 2、启动服务器:使用命令行或相关工具启动 Appium 服务器。
  • 3、连接设备或模拟器:将测试设备或模拟器连接到计算机上。
  • 4、识别应用程序:指定要测试的应用程序的相关信息,如包名和活动名。

上述1~4内容可以参考:

APP自动化测试介绍-CSDN博客

APP自动化测试-入门示例-CSDN博客

APP自动化测试-Appium Inspector入门操作指南-CSDN博客

  • 5、进行元素定位:使用各种定位方法找到应用界面中的元素。
  • 6、执行操作:例如点击、输入文本、滑动等。

本篇会进行5~6(元素定位与操作)的入门介绍

  • 7、等待元素出现:在执行操作前等待特定元素的出现。
  • 8、获取元素属性:获取元素的属性值,如文本、可见性等。
  • 9、断言验证:验证应用的状态或元素的属性是否符合预期。
  • 10、处理异常情况:处理可能出现的错误和异常。
  • 11、编写测试用例:根据需求编写自动化测试用例。
  • 12、运行测试用例:执行编写好的测试用例。
  • 13、查看测试报告:查看测试结果和报告,分析测试的通过率和错误情况。
  • 14、调试和优化:对出现问题的测试进行调试和优化。
  • 15、持续集成:将 Appium 集成到持续集成环境中,实现自动化测试的持续运行

常用基本操作示例:

1、判断手机是否安装app

  • 判断手机是否安装app   driver.is_app_installed("包名")
    返回值:True  有安装app ; False  没有安装app

2、获取包名和界面名

  • driver.current_package  获取当前脚本运行中的app的包名
  • driver.current_activity    获取当前脚本运行中的app的界面名

3、安装卸载app以及判断是否安装app

  • 安装app    driver.install _app(apk路径)
  • 卸载app    driver.remove_app(app包名)

4、将应用置于后台运行

  • driver.background_app(seconds)  # seconds 表示的是将app置于后台运行多少秒的时间

代码示例:

import time
from appium import webdriver
from appium.options.android import UiAutomator2Options


def start_app(app_package, app_activity):
    # 定义desired_caps 字典,初始化app的配置信息
    desired_caps = {
          "platformName": "android",  # 表示的是android
          "platformVersion": "10",  # 表示的是设备系统的版本号
          "deviceName": "DWV6R19A10002101",  # 表示的是设备的ID名称
          "appPackage": app_package,  # 表示的是app的包名
          "appActivity": app_activity,  # 表示的是app的界面名
          "newCommandTimeout": 100000,
          "noReset": True
    }
    # 创建 Appium 驱动实例
    options = UiAutomator2Options().load_capabilities(desired_caps)
    driver = webdriver.Remote("http://localhost:4723/wd/hub", options=options)

    # 启动应用程序
    driver.wait_activity(desired_caps, 5)

    # 返回驱动实例
    return driver


if __name__ == "__main__":
    # 本次启动的应用程序包名和活动名
    app_package_zyb = "com.baidu.homework"
    app_activity_zyb = ".activity.index.IndexActivity"

    # 启动应用程序
    driver_zyb = start_app(app_package_zyb, app_activity_zyb)

    # 判断手机是否安装"CSDN"APP
    Is_app = driver_zyb.is_app_installed("net.csdn.csdnplus")
    print(f"手机是否安装CSDN:{Is_app}")

    # 获取当前脚本运行中的app的包名
    current_package = driver_zyb.current_package
    print(f"当前脚本运行中的app的包名是:{current_package}")
    
    # 获取当前脚本运行中的app的界面名
    current_activity = driver_zyb.current_activity
    print(f"当前脚本运行中的app的界面名是:{current_activity}")

    # 把应用置于后台运行5秒
    seconds = 5
    driver_zyb.background_app(seconds)

    # 停止应用程序,退出驱动
    time.sleep(3)
    driver_zyb.quit()

二、元素定位

元素定位的概念

Appium 元素定位是在 Appium 自动化测试中,确定应用程序界面中特定元素的过程。

以下是一些常见的 Appium 元素定位方法:

  • 通过 ID 定位:元素具有唯一的 ID 属性。
  • 通过文本定位:根据元素显示的文本内容进行定位。
  • 通过类名定位:使用元素的类名进行定位。
  • 通过 Xpath 定位:使用 XPath 表达式来定位元素。
  • 通过Accessibility ID 定位:类似于 ID 定位。
  • 通过图像定位:通过元素的图像特征来定位。

在进行元素定位时,需要注意以下几点:

  • 元素的唯一性:确保定位的元素具有唯一性,避免定位到多个元素。
  • 应用的稳定性:某些情况下,应用的界面可能会发生变化,需要及时更新元素定位方式。
  • 定位方式的选择:根据实际情况选择合适的定位方式。
  • 元素属性的准确性:确保使用的元素属性准确无误。

元素定位举例:

1.1 通过ID定位元素

  • 通过元素的id来进行元素定位
  • driver.find_element(By.ID, id的值)
  • 示例:element = driver.find_element(By.ID, 'com.baidu.homework:id/user_grade')

1.2 通过xpath定位元素

  • 通过xpath的元素属性来进行元素定位
  • driver.find_element(By.XPATH, xpath的值)
  • 示例:
grade_xpath = '//android.widget.TextView[@resource-id="com.baidu.homework:id/gradeName" and @text="六年级"]'
element = driver.find_element(By.XPATH, grade_xpath)

1.3 通过class_name定位元素

  • 通过元素的class属性值来进行元素定位
  • driver.find_element(By.CLASS_NAME, class的值)
  • 示例:class_path = driver_zyb.find_element(By.CLASS_NAME, "android.widget.ImageView")

代码示例:

import time
from appium import webdriver
from appium.options.android import UiAutomator2Options
from selenium.webdriver.common.by import By

def start_app(app_package, app_activity):

    # 定义desired_caps 字典,初始化app的配置信息
    desired_caps = {
          "platformName": "android",  # 表示的是android
          "platformVersion": "10",  # 表示的是设备系统的版本号
          "deviceName": "DWV6R19A10002101",  # 表示的是设备的ID名称
          "appPackage": app_package,  # 表示的是app的包名
          "appActivity": app_activity,  # 表示的是app的界面名
          "newCommandTimeout": 100000,
          "noReset": True
    }
    # 创建 Appium 驱动实例
    options = UiAutomator2Options().load_capabilities(desired_caps)
    driver = webdriver.Remote("http://localhost:4723/wd/hub", options=options)

    # 启动应用程序
    driver.wait_activity(desired_caps, 5)

    # 返回驱动实例
    return driver


if __name__ == "__main__":
    # 本次启动的应用程序包名和活动名
    app_package_zyb = "com.baidu.homework"
    app_activity_zyb = ".activity.index.IndexActivity"

    # 启动应用程序
    driver_zyb = start_app(app_package_zyb, app_activity_zyb)

    time.sleep(5)

    # 通过元素id来进行元素定位,定位到作业批改年级选择框并点击
    element = driver_zyb.find_element(By.ID, 'com.baidu.homework:id/user_grade')
    element.click()

    # 通过XPATH来进行元素定位,定位到六年级并点击,设置年级成功
    grade_xpath = '//android.widget.TextView[@resource-id="com.baidu.homework:id/gradeName" and @text="六年级"]'
    element = driver_zyb.find_element(By.XPATH, grade_xpath)
    element.click()
    time.sleep(3)

    # 通过CLASS_NAME定位到"我的"并点击,进入我的tab页
    class_path = driver_zyb.find_element(By.CLASS_NAME, "android.widget.ImageView")
    class_path.click()

    # 停止应用程序,退出驱动
    time.sleep(5)
    print("运行结束")
    driver_zyb.quit()

未完待续……

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值