【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)

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值