Appium控件交互策略:优化自动化测试效率的关键方法

简介

  与 Web 元素操作一样(参考 Selenium Web 元素操作),定位到 APP 控件元素后,可以对控件进行一系列的操作,实现与 APP 交互,比如点击、文本输入、元素属性获取等。

  控件交互常用方法

  常见操作

  ·点击方法 element.click()。

  · 输入操作 element.send_keys('appium')。

  · 清除操作 element.clear()。

  状态判断

  · 是否可见 element.is_displayed() 返回 True/False。

  · 是否可用 element.is_enabled() 返回 True/False。

  · 是否被选中 element.is_selected() 返回 True/False。

  获取元素属性

  ·获取元素属性:

    -element.get_attribute()

    - resource-id/resourceld 返回 resource-id(API=>18 支持)。

    - text 返回 text。

    - class 返回 class(API=>18 支持)。

    - content-desc/contentDescription 返回 content-desc 属性。

    - checkable,checked,clickable,enabled,focusable,focused 等。

  · 获取元素文本:

    - 格式:element.text。

  · 获取元素坐标:

    - 格式:element.location。

    - 结果:{'y': 19,'x: 498}。

  · 获取元素尺寸(高和宽):

    - 格式:element.size。

    - 结果:{'width':500,'height':22)。

  控件操作交互示例

  · 打开 ApiDemos.apk。

  · 点击 Animation 进入下个页面。

  · 点击 Seeking 进入下个页面。

  · 查看【RUN】按钮是否显示/是否可点击。

  · 查看【滑动条】是否显示/是否可点击。

  · 获取【滑动条】长度。

  · 点击【滑动条】中心位置。


class TestEleOper:

   def setup_class(self):

   '''

   完成 capability 设置

   初始化 driver

   :return:

   '''

   # 设置 cpability

   caps = {

   # 设置 app 安装的平台(Android,iOS)

   "platformName": "Android",

   # 设置 appium 驱动

   "appium:automationName": "uiautomator2",

   # 设置设备名称

   "appium:deviceName": "emulator-5554",

   # 设置被测 app 的包名

   "appium:appPackage": "io.appium.android.apis",

   # 设置被测 app 启动页面的 Activity

   "appium:appActivity": ".ApiDemos",

   # 不清空缓存信息

   "appium:noReset": True,

   # 首次启动的时候,不停止app

   "appium:dontStopAppOnReset": True,

   # 跳过安装,权限设置等操作

   "appium:skipDeviceInitialization": True

   }

   # 初始化 driver

   self.driver = webdriver.Remote(

   "http://127.0.0.1:4723",

   options=UiAutomator2Options().load_capabilities(caps)

   )

   # 添加隐式等待

   self.driver.implicitly_wait(10)

   def test_ele_oper(self):

   '''

   点击滑动条中心位置

   :return:

   '''

   # 点击 Animation

   self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Animation").click()

   # 点击 Seeking

   self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Seeking").click()

   # 查看【RUN】按钮是否显示/是否可点击

   run_btn_ele = self.driver.find_element(AppiumBy.ID, "io.appium.android.apis:id/startButton")

   print(f"RUN按钮是否显示 {run_btn_ele.is_displayed()}")

   print(f"RUN按钮是否可点击 {run_btn_ele.is_enabled()}")

   # 查看【滑动条】是否显示/是否可点击

   seek_bar_ele = self.driver.find_element(AppiumBy.ID, "io.appium.android.apis:id/seekBar")

   print(f"滑动条是否显示 {seek_bar_ele.is_displayed()}")

   print(f"滑动条是否可点击 {seek_bar_ele.is_enabled()}")

   # 获取【滑动条】长度

   seek_bar_ele_width = seek_bar_ele.size.get('width')

   print(f"滑动条长度为 {seek_bar_ele_width}")

   # 获取【滑动条】起始位置坐标

   seek_bar_ele_start = seek_bar_ele.location

   print(f"滑动条起始位置坐标为 {seek_bar_ele_start}")

   # 获取【滑动条】中间位置坐标

   seek_bar_center_x = seek_bar_ele_start.get("x") + seek_bar_ele_width/2

   seek_bar_center_y = seek_bar_ele_start.get("y")

   seek_bar_center = (seek_bar_center_x, seek_bar_center_y)

   print(f"滑动条中间位置坐标为 {seek_bar_center}")

   # 点击【滑动条】中间位置

   self.driver.tap([seek_bar_center], 1000)

总结

  常见控件的基本交互方式,可以模拟用户与应用程序的交互。在编写测试脚本时,通常需要结合元素的定位方式(如 ID、XPath 等)来找到相应的控件元素。确保测试脚本中的等待和定位策略,以及对元素状态的验证,可以提高测试的稳定性和可靠性。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群:,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值