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

目录

  • 1. 元素的常用方法
  • 2. 元素的常用属性
  • 3. Demo示例


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

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)

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

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

你可能感兴趣的:(APP自动化测试,自动化,Appium,控件交互)