• 【App自动化测试】(七)移动端自动化中常见控件交互方法



    前言
    本文为在霍格沃兹测试开发学社中学习到的一些技术写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 😘

    1. 元素的常用方法

    1. 点击方法: element.click()
    2. 输入操作: element.send_keys('appium')
    3. 设置元素的值: element.set_value('appium')
    4. 清除操作: element.clear()
    5. 是否可见: element.is_displayed()
      • 返回 True/False
    6. 是否可用: element.is_enabled()
      • 返回 True/False
    7. 是否被选中: element.is_selected()
      • 返回 True/False
    8. 获取属性值: get_attribute()
      • get_attribute() 方法能获取的属性,元素的属性几乎都能获取到,属性名称和 uiautomatorviewer 里面的一致。
      • get_attribute() 可以获取的属性如下:
        • resource-id/resourceld: 返回 resource-id(API=>18 支持)
        • text: 返回 text
        • class: 返回 class(API=>18 支持)
        • content-desc/contentDescription: 返回 content-desc 属性
        • checkable:返回 true or false
        • checked:返回 true or false
        • clickable:返回 true or false
        • enabled:返回 true or false
        • focusable:返回 true or false
        • focused:返回 true or false
        • long-clickable/longClickable:返回 true or false
        • package:返回 true or false
        • password:返回 true or false
        • scrollable:返回 true or false
        • selection-start:返回 true or false
        • selection-end:返回 true or false
        • selected:返回 true or false
        • displayed :返回 true or false
        • bounds:
        • contentSize

    2. 元素的常用属性

    1. 获取元素文本
      • 格式:element.text
    2. 获取元素起点坐标(元素左上角坐标)
      • 格式:element.location
      • 结果:{'y': 19,'x: 498}
    3. 获取元素尺寸(高和宽)
      • 格式:element.size
      • 结果:{'width':500,'height':22)

    3. Demo示例

    交互步骤:

    1. 打开 demo.apk
    2. 点击 Animation 进入下个页面
    3. 点击 Seeking 进入下个页面
    4. 查看【RUN】按钮是否显示/是否可点击
    5. 查看【滑动条】是否显示/是否可用/是否可点击
    6. 获取【滑动条】长度
    7. 点击【滑动条】中心位置

    演示代码:

    from time import sleep
    from appium import webdriver
    from appium.webdriver.common.appiumby import AppiumBy
    
    
    class TestDemo:
        def setup(self):
            #io.appium.android.apis/.ApiDemos
            # 创建一个字典
            desire_cap = {}
            # 平台
            desire_cap['platform'] = 'Android'
            # 手机系统版本
            desire_cap['platformVersion'] = '6.0'
            # 设备名
            desire_cap['deviceName'] = '127.0.0.1:7555'
            # app 包名
            desire_cap['appPackage'] = 'io.appium.android.apis'
            # app 页面名
            desire_cap['appActivity'] = '.ApiDemos'
            desire_cap['noReset'] = 'true'
            self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desire_cap)
            self.driver.implicitly_wait(10)
    
        def teardown(self):
            self.driver.quit()
    
        def test_seeking(self):
            """
            1. 打开 demo.apk
            2. 点击 Animation 进入下个页面
            3. 点击 Seeking 进入下个页面
            4. 查看【RUN】按钮是否显示/是否可点击
            5. 查看【滑动条】是否显示/是否可用/是否可点击
            6. 获取【滑动条】长度
            7. 点击【滑动条】中心位置
            """
            #点击 Animation 进入下个页面
            self.driver.find_element(AppiumBy.ACCESSIBILITY_ID,"Animation").click()
            #点击 Seeking 进入下个页面
            self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Seeking").click()
            #查看【RUN】按钮是否显示/是否可点击
            el_run=self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Run")
            run_is_displayed=el_run.is_displayed()
            run_is_clickable=el_run.get_attribute("clickable")
            print(f"Run按钮是否可见:{run_is_displayed},Run按钮是否可点击:{run_is_clickable}")
            #查看【滑动条】是否显示 / 是否可用 / 是否可点击
            el_seekbar = self.driver.find_element(AppiumBy.ID, "io.appium.android.apis:id/seekBar")
            seekbar_is_displayed = el_seekbar.is_displayed()
            seekbar_is_enabled = el_seekbar.is_enabled()
            seekbar_is_clickable=el_seekbar.get_attribute("clickable")
            print(f"滑动条是否可见:{seekbar_is_displayed},滑动条是否可用:{seekbar_is_enabled},滑动条是否可点击:{seekbar_is_clickable}")
            #获取【滑动条】长度
            seekbar_size=el_seekbar.size
            seekbar_width=seekbar_size.get("width")
            seekbar_height=seekbar_size.get("height")
            print(f"滑动条的长度是:{seekbar_width}")
            #点击【滑动条】中心位置
            seekbar_location=el_seekbar.location  #location返回的是元素起始坐标
            x=seekbar_location.get("x")
            y=seekbar_location.get("y")
            centerx=x+seekbar_width/2 #所以中心位置坐标的x是location的x加上滑动条长度的二分之一
            centery=y
            self.driver.tap([(centerx,centery)])
            sleep(5)
    
    • 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
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    文末说明:
    接口测试中我们很容易混淆Session、cookie和token,你知道他们有什么区别吗?

    快来跟我一起看,一篇文章让你了解三者的区别。😎
    ⬇⬇⬇⬇⬇⬇⬇
    👍👍👍:接口测试经典面试题:Session、cookie、token有什么区别?

  • 相关阅读:
    pytest7.4版本的一个变更,可能会影响你的项目
    二叉树题目:最大二叉树
    Java I/O(一)I/O概述
    Linux中路由route
    彻底理解Linux的crontab
    C2025 基础进阶——模拟与枚举
    【Java进阶篇】第二章 Java数组(下篇) 二维数组
    [第二十三篇]——Docker 安装 Apache之SpringCloud大型企业分布式微服务云架构源码
    基于PHP+MySQL的美容会所企业资产管理系统
    spring的循环依赖
  • 原文地址:https://blog.csdn.net/gjj920318/article/details/127996329