移动端UI自动化之appium的使用(一)

一、 获取app的信息

1.1、获取App启动的appPackage和appActivity

方式一:通过 logcat 日志获取

# linux/mac启动日志打印命令,每次操作设备上的app都会打印package和activity信息。
adb logcat ActivityManager:I | grep "cmp"
# windows
adb logcat ActivityManager:I | findstr "cmp" 

打开App第一次获取的cmp中的内容,就是所需要的启动appPackage和appActivity
在这里插入图片描述

方式二:通过 aapt 获取

# mac/Linux
aapt dump badging wework.apk  | grep launchable-activity
# windows
aapt dump badging wework.apk  | findstr launchable-activity

验证获取的appPackage和appActivity是否正确

# 启动应用命令
adb shell am start -W -n <package-name>/<activity-name> -S

示例:启动企业微信app

C:\Users\18367>adb shell am start -W -n com.tencent.wework/.launch.LaunchSplashActivity -S
Stopping: com.tencent.wework
Starting: Intent {
    cmp=com.tencent.wework/.launch.LaunchSplashActivity }
Status: timeout
Activity: com.tencent.wework/.launch.LaunchSplashActivity
WaitTime: 10217
Complete

1.2、App信息

app信息

# 获取当前界面元素
adb shell dumpsys activity top
# 获取任务列表
adb shell dumpsys  activity activities

二、appium元素定位与三种等待

2.1、desirecapability介绍

Capability设置

常用参数

更多详细功能参考官网中文文档

app:apk地址

appPackage:包名

appActivity:Activity名称

automationName:android默认使用uiautomator2,ios默认使用XCUITest

noReset/fullReset:是否在测试前后重置相关环境

unicodeKeyboard和resetKeyboard: 是否需要输入非英文之外的语言并在测试完成后重置输入法

dontStopAppOnReset:首次启动的时候,不停止app(可以调试或者运行的时候提升运行速度)

skipDeviceInitialization:跳过安装,权限设置等操作(可以调试或者运行的时候提升运行速度)

2.2、appium元素定位

常用的两种定位方式id,accessibility_id

driver.find_element_by_id(resource-id)
driver.find_element_by_accessibility_id(content-desc)

2.3、三种等待

强制等待

也叫做进程等待,通常通过sleep等待固定的时间,一般不推荐

隐式等待(全局性)

设置一个超时时间,服务端appium会在给定的时间内,不停的查找,默认值是0

用法:self.driver.implicitly_wait(5)

在服务端等待

显式等待(等待某个元素)

在客户端等待

用法:WebDriverWait(driver, 10).until(lamba x: x.find_element(By.ID, ''))

三、app控件定位

3.1、android/ios基础知识

android基础知识

Android 是通过容器的布局属性来管理子控件的位置关系,布局过程就是把界面上的所有控件,根据他们的间距的大小,摆放在正确的位置。

Android七大布局:

  1. LinearLayout(线性布局)
  2. RelativeLayout(相对布局)
  3. FrameLayout(帧布局)
  4. AbsoluteLayout(绝对布局)
  5. TableLayout(表格布局)
  6. GridLayout(网格布局)
  7. ConstraintLayout(约束布局)

Android四大组件:

  1. activity:与用户交互的可视化界面
  2. service:实现程序后台运行的解决方案
  3. content provider:内容提供者,提供程序所需要的数据
  4. broadcast receiver:广播接收器,监听外部事件的到来(比如来电)

常用的控件:

  • TextView:文本控件
  • EditText:可编辑文本控件
  • Button:按钮
  • ImageButton:图片按钮
  • ToggleButton:开关按钮
  • ImageView:图片控件
  • CheckBox:复选框控件
  • RadioButton:单选框控件

布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置,从而编写出精美的控件。当然布局的内部除了放置控件外,也可以放置布局,通过多层布局的嵌套,我们就能够完成一些比较复杂的界面。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值