• 智能终端界面自动化测试操作工具 - Appium常见用法


    1. Appium 是什么可以做什么?

    Appium 是一款开源的移动应用自动化测试框架,用于测试移动应用程序的功能和用户界面。它支持多种移动平台,包括 Android 和 iOS,可以使用多种编程语言进行脚本编写,如 Python、Java、JavaScript 等。
    简单理解,Selenium是用于桌面系统的Web界面自动化测试框架,Appium是在智能终端,如Android Apple iPhone iPad等手机设备上,自动访问控制手机,在相关App上进行自动化测试操作。

    2. Appium 依赖软件包安装

    在使用 Appium 进行 Android 自动化测试之前,需要安装以下依赖软件和工具:

    1. Java Development Kit (JDK): Appium 是基于 Java 开发的,因此需要安装 JDK。你可以从 Oracle 官方网站下载适用于你的操作系统的 JDK 版本,并按照官方指南进行安装。

    2. Android SDK: Android SDK 提供了 Android 平台的开发工具和 API,用于构建和运行 Android 应用程序。你可以从 Android 开发者网站下载 Android SDK,并按照指南进行安装。

    3. Node.js: Appium 是使用 Node.js 编写的,因此需要安装 Node.js 运行环境。你可以从 Node.js 官方网站下载适用于你的操作系统的 Node.js 版本,并按照官方指南进行安装。

    4. Appium Server: Appium Server 是 Appium 的核心组件,用于驱动设备或模拟器,并提供与移动应用的通信接口。你可以从 Appium 官方网站下载 Appium Server,并按照指南进行安装。

    5. Appium Python 客户端库: 如果你选择使用 Python 编写 Appium 脚本,需要安装 Appium Python 客户端库。你可以使用 pip 命令在命令行中安装 Appium Python 客户端库,如下所示:

    pip install Appium-Python-Client
    
    • 1
    1. Android 虚拟设备或真机: 为了运行和测试 Android 应用程序,你需要准备一个 Android 虚拟设备(模拟器)或连接一台 Android 真机设备,并确保设备已启用开发者选项和 USB 调试功能。

    确保安装和配置正确后,你将能够开始编写和运行 Appium 脚本来自动化测试 Android 应用程序。

    3. 启用Android设备的开发者选项和USB调试功能

    开始编写自动化测试脚本之前,需要连接手机,启用 Android 设备的开发者选项和 USB 调试功能:

    1. 打开设备的设置(Settings):在 Android 设备上,滑动下拉通知栏,然后点击右上角的设置图标,或者在应用程序列表中找到并点击设置应用程序图标。

    2. 查找设备信息(About Phone 或 About Device):在设置中,向下滚动或浏览列表,找到 “关于手机” 或 “关于设备” (可能会有轻微的差异),然后点击进入该选项。

    3. 查找设备版本号:在设备信息中,查找 “版本号” 或 “软件信息”。通常,你需要点击 “版本号” 字段七次或更多次,直到出现一个提示表示开发者选项已经启用。

    4. 返回设置并找到开发者选项:返回到设置界面,在设置列表的末尾或在其他选项下,你将看到 “开发者选项”。点击进入该选项。

    5. 启用开发者选项:在开发者选项页面,找到并点击开关按钮或复选框,将其从 “关闭” 改为 “打开” 或 “启用”。这将启用开发者选项。

    6. 启用 USB 调试:在开发者选项页面,滚动或浏览列表,找到 “USB 调试” 选项,并勾选复选框以启用 USB 调试功能。

    完成上述步骤后,你的 Android 设备将启用开发者选项和 USB 调试功能。现在你可以使用 Appium 或其他工具与设备进行连接,并进行 Android 自动化测试。请注意,不同的 Android 设备可能会有略微不同的界面和选项标签,但基本上遵循相似的步骤。

    4. Appium常见用法

    当使用 Appium 和 Python 进行移动应用自动化测试时,以下是一些常见的代码示例,涵盖元素定位、操作和断言等方面:

    1. 启动应用程序并连接到 Appium 服务器
    from appium import webdriver
    
    desired_caps = {
        'platformName': 'Android',
        'deviceName': 'Android Emulator',
        'appPackage': 'com.example.app',
        'appActivity': 'com.example.app.MainActivity'
    }
    
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 通过 ID 定位元素并进行点击操作
    from appium.webdriver.common.mobileby import MobileBy
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 等待元素出现
    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.presence_of_element_located((MobileBy.ID, 'com.example.app:id/button')))
    
    # 点击按钮
    element.click()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 通过 XPath 定位元素并输入文本
    from appium.webdriver.common.mobileby import MobileBy
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 等待元素可见
    wait = WebDriverWait(driver, 10)
    text_input = wait.until(EC.visibility_of_element_located((MobileBy.XPATH, '//android.widget.EditText[@text="Username"]')))
    
    # 输入文本
    text_input.send_keys('John Doe')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 滑动屏幕
    from appium.webdriver.common.touch_action import TouchAction
    
    # 获取屏幕尺寸
    screen_size = driver.get_window_size()
    start_x = int(screen_size['width'] * 0.5)
    start_y = int(screen_size['height'] * 0.8)
    end_x = int(screen_size['width'] * 0.5)
    end_y = int(screen_size['height'] * 0.2)
    
    # 滑动屏幕
    action = TouchAction(driver)
    action.press(x=start_x, y=start_y).move_to(x=end_x, y=end_y).release().perform()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. 断言元素的文本内容
    from appium.webdriver.common.mobileby import MobileBy
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 等待元素出现
    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.presence_of_element_located((MobileBy.ID, 'com.example.app:id/text_view')))
    
    # 断言文本内容
    expected_text = 'Hello, Appium!'
    actual_text = element.text
    assert expected_text == actual_text
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这些示例演示了常见的 Appium Python 代码用法,包括启动应用程序、定位元素、进行操作和断言验证。你可以根据具体的应用程序和测试需求进行相应的修改和扩展。请注意,这些示例中的元素定位方式和元素的标识符(如 ID、XPath)可能因应用程序的不同而有所变化,需要根据实际情况进行调整。

    5. 简单代码示例 - 通过Chrome访问csdn

    from appium import webdriver
    import time
    
    # Appium服务器地址和设备配置
    desired_caps = {
        'platformName': 'Android',
        'platformVersion': 'your_android_version',
        'deviceName': 'your_device_name',
        'browserName': 'Chrome',
    }
    appium_server = 'http://localhost:4723/wd/hub'
    
    # 创建Appium WebDriver实例
    driver = webdriver.Remote(appium_server, desired_caps)
    driver.implicitly_wait(10)
    
    # 打开Google Chrome浏览器并访问网址
    print("打开Google Chrome浏览器")
    driver.get('https://blog.csdn.net/')
    time.sleep(2)
    
    # 找到搜索框并输入关键字
    print("在搜索框中输入关键字: Entropy-Go")
    search_box = driver.find_element_by_id('search_input')
    search_box.send_keys('Entropy-Go')
    
    # 提交搜索表单
    print("提交搜索表单")
    submit_button = driver.find_element_by_id('search_button')
    submit_button.click()
    time.sleep(2)
    
    # 打开搜索结果的第一个网页
    print("打开搜索结果的第一个网页")
    first_result = driver.find_element_by_css_selector('div.search-list-con > dl > dt > a')
    first_result.click()
    time.sleep(2)
    
    # 关闭浏览器并退出
    driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
  • 相关阅读:
    智能化物流管理:全国快递物流查询API的角色与优势
    vue3项目创建步骤,以及项目运行失败的原因和解决方法
    Mysql的事务以及存储引擎
    HTML静态网页成品作业(HTML+CSS+JS)——体育足球介绍设计制作(3个页面)
    华为机试 - ABR 车路协同场景
    redis学习八spring.data.redis、连接、序列化、high/low api
    Flink on yarn 实战和源码分析
    Multi-View Learning(多视图学习/多视角学习 )是什么? Co-training(协同训练)和它的关系
    防止数据冒用的方法
    如何实现一个安卓群控系统
  • 原文地址:https://blog.csdn.net/holyvslin/article/details/134049212