appium介绍

前言

本文为在霍格沃兹测试开发学社的学习经历分享

简介

appium是一个移动端的自动化测试框架,可用于测试原生应用,移动网页应用和混合应用,且是跨平台的。 开源的

  • 原生应用指的是用android或IOS编写
  • 移动网页应用是指网页应用
  • 混合应用是指一种包裹webview的应用,原生应用网页内容交互性的应用

优势

  1. 跨语言:java,python,nodejs等
  2. 跨平台:
  • 移动端:Android,IOS
  • PC端:Windows,Mac
  • 主流是测试安卓和ios端,也可以用来测试win和mac系统的桌面应用
  1. 底层多引擎可切换
  2. 生态丰富,社区强大

基础知识

android七大布局

  1. LinearLayout 线性布局
  2. RelativeLayout 相对布局
  3. FrameLayout 帧布局
  4. AbsoluteLayout 绝对布局 兼容性差
  5. TableLayout 表格布局
  6. GridLayout 网格布局
  7. ConstraintLayout 约束布局
  • 线性布局是以线性的方式布局,横向或者纵向,有两种结构,一个是水平的,一个是垂直的。使用最多的布局结构
  • 相对布局要确定一个布局的位置,再根据布局位置去确定第二个布局相对于第一个布局的间距和大小
  • 帧布局一般用于布局的最底层,从左上角到右下角的布局结构
  • 绝对布局是根据绝对坐标去进行布局,一般很少用,不适用于兼容性(小屏变大屏的情况等)
  • 表格布局与网格布局类似,把页面上的一些图片文字等以表格的形式放在布局里

安卓四大组件

  • activity 与用户交互的可视化界面
  • service 实现程序后台运行的解决方案(例如后台播放音乐),无界面,只存在于后台中运行
  • content provider 内容提供者,提供程序所需要的数据(可通过文件形式提供,也可以通过数据库的形式提供)
  • droadcast receiver 广播接收器,监听外部时间的到来(比如来电)

常用控件:TestView(文本控件),EditText(可编辑文本控件)Button(按钮),ImageButton(图片按钮),ToggleButton(开关按钮)ImageView(图片控件)CheckBox(复选框控件),RadioButton(单选框控件)

控件基础知识

  1. Android:
    布局是一种可用于放置很多控件的容器,可以进行布局嵌套完成较为复杂的界面
    在这里插入图片描述

  2. IOS:

  • IOS去掉了布局的概念,直接用变量之间的相对关系完成位置的计算
  • 开发环境:
    • 系统:MacOS X(用appium测试IOS也需要使用mac系统)
    • 开发工具:Xcode
    • 开发语言:ObjectC
    • 安装文件:.ipa文件/.app文件

注意:appium测试IOS应用需要使用mac系统环境

  1. 控件基础知识
  • Document Object Model 文档对象模型
  • dom模型最早应用于html和js的交互,用于表示界面的控件层级,界面的结构化描述,核心元素为节点和属性
  • xpath:xml路径语言,用于xml的节点定位
  • 安卓应用的层级结构与html不一样,是一个定制的xml
  • app source类似于dom,表示app的层级,代表了界面里面所有的控件树的结构
  • 每个控件都有自己的属性(reourceceid,xpath,id等)但没有css属性

定位方法:

  • id定位
    • driver.find_element_by_id(resource-id属性值)
    • driver.find_element(MobileBy.ID,"resource.id")
    • appium在1.5版本以后舍弃了MobileBy的用法,改成了AppiumBy
  • xpath定位
    • driver.find_element_by_xpath(xpath属性值)

appium设计理念

webdriver是基于http协议的,第一连接会建立一个session会话,并通过post发送一个json告知服务端相关测试信息

appium工作原理

在这里插入图片描述

三部分组成:

  • client(客户端):编写测试代码,客户端通过webdriver json wire协议与服务端通讯
  • server(服务端):运行脚本时,需要提前启动,会监听客户端发来的请求并转发给手机端,一般是4723端口。请求过程中遵循webdriver协议。
  • 手机端:会在手机端安装对应的server,接收到请求后通过server程序转化成他能识别的操作,然后将结果返回给server。server再返回给客户端

理解:

  1. 客户端第一次发送给server端请求时,会带一个json串即字典,需要传递capability信息,通过post请求传给server端,从而启动设备。
  2. 第一次启动服务时,其实就是给手机端安装对应的服务以及初始化设备,手机端将结果返回给server端再返回给客户端,这个过程中,会生成一个session对象,记录了测试的设备平台,版本,包,设置等。
  3. 从第二次给server端发送请求开始,就可以利用上面生成的session对象完成相应的操作。appium server中集成了多平台的引擎,从而实现多平台的使用。

面试题--appium的工作原理:

答:Appium 是典型的 C/S 架构模式的框架。第一次运行 Appium 测试代码,向 Appium Server 发送请求时,会传递一个 DesireCapability 对象,告诉 AppiumServer,被测试设备的一些信息,第一次请求完成,会创建一个 session 对象,随后会使用这个 session 对象完成对设备的操作(比如点击,输入等)。

工作引擎:

  • appium 工作引擎 iOS 9.3 and above: Apple's XCUITest/iOS 9.3 and lower: Apple's UIAutomation。
  • Android 4.3+: Google's UiAutomator/UiAutomator2,
  • Windows: Microsoft's WinAppDriver

Appium安装

1. 环境安装(简化版)

  • Java1.8
  • Android SDK(基于java1.8版本的)
  • Appium Desktop 界面化工具
  • python3
  • Appium (python) client 各种语言的客户端封装库,用于连接appium server
  • 调用appium程序的appium server
  • 方便通过python代码与appium server交互
  • AppCrawler 自动遍历工具 底层基于appium开发的

2. 进阶版

  • appium服务运行环境依赖
  • android sdk
  • node js npm
  • appium server
  • python3
  • appium python client
  • appium-doctor是检测appium的安装环境的,可以查看是否有遗漏的服务
  • npm install -g appium-doctor 安装

3. 相关adb命令:

  • 测试设备:手机模拟器(用mumu模拟器举例)
  • adb connect 127.0.0.1:7555
  • adb devices 查看连接设备
  • adb kill-server 127.0.0.1:7555 关掉服务

android自动化前提依赖

  1. appium desktop功能介绍(入门学习工具)(appium里的inspector session)
  • UI分析
  • 录制用例
  • 元素查找测试
  • Attach已有的session
  • 云测试
  1. 利用appium desktop生成用例模板:
  • 获取app信息
  • 配置待测应用信息
  • 导出python语言用例
  • 增加隐式等待增强用例稳定性

操作步骤

  1. 启动appium server
  2. 进入inspector session
  3. 在Automatic server(自动的server)下输入:
  • platformName android
  • device 127.0.0.1:7555 (连接mumu模拟器)
  • appPackage com.xueqiu.android (雪球)
  • appActivity .view.WelcomeActivityAlias (首页)

定位

android定位工具

  1. uiautomatorviewer工具(仅支持安卓设备)
  • sdk路径下的工具
  • 命令行输入:uiautomatorviewer 即可启动工具
  1. appium inspector 工具

android中两个id的区别

  • accessibility_id就是元素属性里面的content-desc,不是每个元素都有这个属性
  • id就是对应元素的resource-id属性值

推荐阅读文章链接:只需Docker,环境问题再也不是测开路上的『坑』_霍格沃兹测试开发学社的博客-CSDN博客

posted @ 2022-09-10 09:14  北冥有鱼。  阅读(16)  评论(0编辑  收藏  举报