乐于分享
好东西不私藏

Android 和 ios 基础知识(八)

Android 和 ios 基础知识(八)

一、Android 核心基础知识

Android 界面的核心逻辑是「布局管理控件,组件驱动功能」,所有可视化元素都依赖布局规则摆放,功能依赖四大组件支撑。

1. Android 布局体系(7 大布局)

Android 通过「布局容器」的属性来定义子控件的位置、大小、间距,不同布局对应不同的摆放规则,是理解界面结构的核心:
布局类型
核心特点
适用场景
自动化定位注意点
线性布局(LinearLayout)
子控件按水平(horizontal)/ 垂直(vertical) 方向依次排列
简单列表、按钮行(如底部导航栏)
控件按顺序排列,可通过orientation属性判断排列方向
相对布局(RelativeLayout)
子控件基于「父容器 / 其他控件」的相对位置摆放(如 “在按钮 A 下方”)
复杂界面(如表单、多控件组合)
自动化中常通过「父子 / 兄弟」层级定位元素
帧布局(FrameLayout)
子控件默认重叠摆放(后添加的控件覆盖前面的)
图片 + 文字叠加(如带角标的图标)
注意控件层级,避免定位到被覆盖的元素
表格布局(TableLayout)
按「行 + 列」的表格形式摆放控件
数据列表(如通讯录、商品列表)
可通过行 / 列索引辅助定位
绝对布局(AbsoluteLayout)
通过「x/y 坐标」固定控件位置
极少使用(适配性差)
自动化中坐标定位不稳定,尽量避免依赖
网格布局(GridLayout)
更灵活的表格布局,支持跨行 / 跨列
九宫格、计算器界面
按网格行列数定位元素更精准
约束布局(ConstraintLayout)
替代 RelativeLayout,通过「约束关系」定义控件位置,适配性强
主流 APP 的主界面(Android Studio 默认布局)
自动化中最常见,优先通过 ID/Text 定位,而非约束关系

2. Android 四大组件(APP 功能的核心)

四大组件是 Android APP 的 “骨架”,决定了 APP 的交互、后台运行、数据交互等核心能力,自动化测试需理解其作用:
组件名称
核心作用
自动化测试关联场景
Activity
与用户交互的可视化界面(如登录页、首页)
自动化中 “启动 APP”“切换页面” 本质是启动 / 跳转 Activity(对应 Desired Capability 中的appActivity
Service
后台运行的服务(如音乐播放、下载)
自动化需验证后台服务是否正常(如播放音乐后切后台仍能播放)
Content Provider
数据共享组件(如读取通讯录、相册)
自动化中需获取 APP 数据时(如验证 APP 读取手机通讯录是否正常)
Broadcast Receiver
监听系统 / APP 广播(如来电、网络变化、APP 安装完成)
自动化验证广播触发逻辑(如网络断开时 APP 是否弹出提示)

3. Android 常用控件(界面交互的基础元素)

控件是 Android 界面的 “最小交互单元”,自动化中定位的核心目标,以下是高频使用的控件:
控件类别
具体控件
核心作用
自动化定位属性
文本类
TextView
显示不可编辑的文本(如标题、提示语)
text
resource-id
文本类
EditText
可输入的文本框(如用户名、密码输入框)
resource-id
class(android.widget.EditText)
按钮类
Button
普通按钮(如 “登录”“提交”)
text
clickable=true
按钮类
ImageButton
图片按钮(无文字,仅图片)
content-desc
resource-id
按钮类
ToggleButton
开关按钮(如 “开启 / 关闭推送”)
checked
(是否选中)、text
图片类
ImageView
显示图片(如 LOGO、商品图片)
content-desc
resource-id
选择类
CheckBox
复选框(如 “同意协议”“多选商品”)
checked
text
选择类
RadioButton
单选框(如 “性别选择”)
checked
textgroup(所属单选组)

二、iOS 核心基础知识

iOS 的界面布局、开发体系与 Android 差异显著,核心是 “无布局容器,靠相对关系计算位置”,以下是自动化测试需掌握的核心点:

1. iOS 布局逻辑(区别于 Android 的核心)

  • 核心特点:iOS没有 Android 的 “布局容器” 概念,而是通过「AutoLayout」技术,定义控件之间的相对关系(如 “控件 A 的顶部距离屏幕顶部 20px”“控件 B 的宽度等于控件 A 的一半”),系统自动计算控件的位置和大小,适配不同尺寸的 iOS 设备;
  • 自动化关联:iOS 元素定位时,无需关注 “布局类型”,只需关注元素的accessibilityId、xpath、className等属性,与 Android 的定位逻辑一致,但属性名称略有差异(如 iOS 的label对应 Android 的text)。

2. iOS 开发核心信息

类别
详情
自动化测试关联
开发工具
Xcode
iOS APP 的元素定位需用 Xcode 的「Accessibility Inspector」(类似 Android 的 uiautomatorviewer)
开发语言
Objective-C(传统)/ Swift(主流)
对自动化无直接影响,Appium 封装了跨语言的客户端库
安装文件
.ipa(安装包,类似 Android 的.apk)/.app(开发包)
自动化中可通过 Appium 安装.ipa 文件到模拟器 / 真机

3. Android vs iOS 核心差异(自动化视角)

维度
Android
iOS
布局体系
7 大布局容器管理控件位置
无布局容器,靠 AutoLayout 相对关系计算
元素属性
核心:resource-idtextcontent-desc
核心:accessibilityIdlabelname
开发工具
Android Studio + uiautomatorviewer
Xcode + Accessibility Inspector
安装包
.apk
.ipa/.app
四大组件
Activity/Service 等
无四大组件概念,靠 ViewController 管理界面

总结

Android 核心:

界面由「7 大布局」管理控件位置,功能由「四大组件」支撑,自动化需重点关注控件的resource-id、text属性;

iOS 核心:

无布局容器,靠 AutoLayout 相对关系定位控件,自动化需关注accessibilityId、label属性;

自动化共性:

无论 Android/iOS,元素定位的核心是找到「唯一、稳定」的属性(如 Android 的 ID、iOS 的 accessibilityId),避免依赖坐标、class 等易变属性。