『App自动化测试之Appium基础篇』| 从定义、原理、环境搭建、安装问题排查等深入了解Appium

『App自动化测试之Appium基础篇』| 从定义、原理、环境搭建、安装问题排查等深入了解Appium

  • 1 关于Android UI自动化测试
  • 2 Appium简介
  • 3 Appium原理
    • 3.1 Android端过程
    • 3.2 iOS端过程
  • 4 补充内容
  • 5 JDK下载
  • 6 JDK配置
  • 7 SDK下载
  • 8 SDK配置
  • 9 配置Android环境
  • 10 安装NodeJs
  • 11 解决node安装时提示不是内部命令
  • 12 安装配置Appium
  • 13 appium环境验证
  • 14 appium安装问题排查
    • 14.1 cmdline-tools问题
    • 14.2 opencv4nodejs问题
    • 14.3 ffmpeg问题
    • 14.4 mjpeg-consumer问题
    • 14.5 bundletool.jar问题
    • 14.6 gst-launch问题
  • 15 完整无报错的Appium信息

1 关于Android UI自动化测试

  • Android UI自动化测试工具有很多,这些工具基本是基于Android控件层面,涉及WidgetsWebView两类;
  • 而关于其测试方法一般有二:

第一种是:
通过Android提供的各种服务来获取当前窗口的视图信息,如UI Automator

第二种是:
基于Instrumention,把测试APK和被测APK运行在同一个进程中,通过Java反射机制来获取当前窗口的所有视图,如Robotium

  • 常用的测试工具有:UI AutomatorAppiumEspressoSelendroidRobotium等;
  • 本文主要介绍的是Appium

2 Appium简介

  • Appium是开源的、跨平台的测试自动化测试框架;
  • 主要用于测试移动端应用;
  • Appium支持模拟器和真机上的原生应用、混合应用、Web应用;
  • Appium使用WebDriverJSON wire协议来驱动Apple系统的UI Automator库、Android系统的UI Automator框架;
  • Appium集成了Selendroid框架,所以Appium支持比较老版本的Android
  • Appium支持Selenium WebDriver支持的所有语言(JavaPythonJavaScriptObjective-CPHPRubyC#ClojurePerl等)。

3 Appium原理

3.1 Android端过程

  • 客户端client,指咱们的测试脚本;
  • Appium在服务端启动一个Server(4723端口),用来接口WebDriver client标准的rest请求,调用对应框架响应操作;
  • Appium Server把请求转发给中间件Bootstrap.jar(手机上),Bootstrap.jar监听4724端口并接收Appium命令;
  • Bootstrap将执行结果返回给Appium Server
  • Appium Server再将结果返回给Appium Client

3.2 iOS端过程

  • 客户端client,指咱们的测试脚本;
  • Appium在服务端启动一个Server(4723端口),用来接口WebDriver client标准的rest请求,调用对应框架响应操作;
  • Appium Server调用instruments.js,启动socket server,分出子进程instruments.app,将bootstrap.js注入device
  • bootstrap.js将执行结果返回给Appium Server
  • Appium Server再将结果返回给Appium Client

4 补充内容

  • UI Automator测试框架是Android SDK自带的APP UI自动化测试Java库;
  • UI AutomatorH5支持有限;
  • Appium 引入了chromedriver等来实现基于H5的自动化;
  • Android和iOS启动过程的区别在Appium将请求转发给了Bootstrap.jarbootstrap.js,再由Bootstrap驱动UI AutomatorUI Automation

5 JDK下载

  • 安装地址:Java Downloads;
    在这里插入图片描述
  • 根据操作系统选择下载,我的是Windows平台;
  • 双击安装文件,按照提示,可以一步步安装,中间会有两次选择安装路径,第一次是安装Jre,第二次是安装Jdk,两次的安装目录,建议单独放在一个磁盘的根目录,如下,笔者的是:jdk-11.0.8
    在这里插入图片描述

6 JDK配置

  • 新建系统环境变量JAVA_HOME
    在这里插入图片描述
  • 编辑系统变量Path
Windows10 电脑,新建变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
Windows7 电脑,在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;注意用;号分隔
  • 新建系统变量CLASSPATH变量:
变量名:CLASSPATH  
变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
  • 验证java环境:
    在这里插入图片描述

7 SDK下载

  • SDK下载: SDK官网和 下载较快的SDK网站;
  • 比如我们选第二个进入下载页面:
    在这里插入图片描述
  • 选择对应的平台下载即可,我这里是windows平台的;
  • 下载后解压到指定目录,比如:
    在这里插入图片描述

8 SDK配置

  • SDKplatform-tools、根目录、tools配置到系统环境变量path中;
D:\android-sdk-windows\platform-tools
D:\android-sdk-windows
D:\android-sdk-windows\tools

在这里插入图片描述

9 配置Android环境

  • 新建系统环境变量ANDROID_HOME值为SDK根目录:
ANDROID_HOME
D:\android-sdk-windows

在这里插入图片描述

  • 新建系统环境变量ANDROID_PATH值为SDKplatform-tools目录:
ANDROID_PATH
D:\android-sdk-windows\platform-tools

在这里插入图片描述

10 安装NodeJs

  • 安装这个只要是用它来安装appium以及验证后续安装的Appium是否成功;
  • 下载地址:NodeJs:
    在这里插入图片描述
  • 下载后直接双击运行即可node-v20.10.0-x64.msi
  • 安装完在命令行执行npm看到以下界面则表示node安装成功了:
    在这里插入图片描述

11 解决node安装时提示不是内部命令

  • 需要配置node.js的一些环境变;
  • node.js的安装目录下新建两个文件夹如下node_globalnode_cache
    在这里插入图片描述
  • 打开系统环境变量,新增NODE_PATH变量:
NODE_PATH
D:\nodejs\node_modules

在这里插入图片描述

  • 在系统环境变量的path新增:%NODE_PATH%
    在这里插入图片描述
  • 打开用户环境变量,修改path中的npm路径为:D:\nodejs\node_global
    在这里插入图片描述
    在这里插入图片描述
  • 重启电脑、重启电脑、重启电脑(重要的事情说三遍)。

12 安装配置Appium

  • Appium官网:
    在这里插入图片描述
  • 点击左侧的install Appium使用NPM安装:
npm i --location=global appium
  • 命令行输入appium即可:
C:\Windows\System32>appium
[Appium] Welcome to Appium v2.2.3
[Appium] Appium REST http interface listener started on http://0.0.0.0:4723
[Appium] You can provide the following URLs in your client code to connect to this server:
[Appium]        http://172.16.1.33:4723/
[Appium]        http://127.0.0.1:4723/ (only accessible from the same host)
[Appium]        http://172.31.32.1:4723/
[Appium] No drivers have been installed in C:\Users\Administrator\.appium. Use the "appium driver" command to install the one(s) you want to use.
  • 关于安装可参考官网:
    在这里插入图片描述
  • 还有环境的要求:
    在这里插入图片描述
  • 还有一种安装方式为使用GUI界面去安装appium-desktop;
    在这里插入图片描述
  • 选择的对应包即可:
    在这里插入图片描述
  • 这里需要注意下,官网给出了明确说明,appium-desktop将不再支持
    Appium 2.0+版本,建议使用命令行方式,
    在这里插入图片描述

13 appium环境验证

  • 先安装appium-doctor
npm install -g appium-doctor
  • 命令行输入appium-doctor,检查环境是否ok:
    在这里插入图片描述

14 appium安装问题排查

  • appium给出这几个错误的安装方法,但是有的地址无法访问了,所以以下对每个错误进行了排查:
### Optional Manual Fixes ###
info AppiumDoctor The configuration can install optionally. Please do the following manually:
WARN AppiumDoctor  ➜ mjpeg-consumer module is required to use MJPEG-over-HTTP features. Please install it with 'npm i -g mjpeg-consumer'.
WARN AppiumDoctor  ➜ bundletool.jar is used to handle Android App Bundle. Please read http://appium.io/docs/en/writing-running-appium/android/android-appbundle/ to install it. Also consider adding the ".jar" extension into your PATHEXT environment variable in order to fix the problem for Windows
WARN AppiumDoctor  ➜ gst-launch-1.0.exe and gst-inspect-1.0.exe are used to stream the screen of the device under test. Please read https://appium.io/docs/en/writing-running-appium/android/android-screen-streaming/ to install them and for more details

14.1 cmdline-tools问题

  • 我这一大堆错的,挨个排查吧,先看下这个:
apkanalyzer.bat could NOT be found in D:\android-sdk-windows!
  • 安装:commandlinetools:
    在这里插入图片描述
  • 解压到SDK的目录下:
    在这里插入图片描述
  • cmdline-tools\bin目录下的apkanalyzer.bat文件复制到platform-tools下:
    在这里插入图片描述
  • 重新打开cmd,输入appium-doctor ,查看问题解决了:
    在这里插入图片描述

14.2 opencv4nodejs问题

  • 第二个问题:
 opencv4nodejs cannot be found.
  • 安装opencv4nodejs,CMake官网:
    在这里插入图片描述
  • 下载后双击cmake-3.28.0-rc5-windows-x86_64.msi,安装到默认路径,并勾选增加环境变量给所有用户:
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 如果还是不行,建议手动将其目录添加到系统环境变量中:
C:\Program Files\CMake\bin\
  • 输入cmake -version查看:
cmake version 3.28.0-rc5
  • 安装opencv4nodejs
npm -g install opencv4nodejs --ignore-scripts
  • 重新检查看是否还会报错opencv4nodejs 错误,发现是ok了:
    在这里插入图片描述

14.3 ffmpeg问题

  • 第三个错误:
 ffmpeg cannot be found
  • 下载ffmpeg安装包:ffmpeg安装:
    在这里插入图片描述
    在这里插入图片描述
  • 下载后ffmpeg-release-essentials.zip解压到某个目录下:
D:\ffmpeg-6.1-essentials_build
  • 并添加环境变量:
D:\ffmpeg-6.1-essentials_build\bin
  • 再次检查发现ffmpeg也是ok的:
    在这里插入图片描述

14.4 mjpeg-consumer问题

  • 第四个问题:
 mjpeg-consumer cannot be found
  • 直接使用npm i -g mjpeg-consumer安装即可;
  • 排查也是ok了:
    在这里插入图片描述

14.5 bundletool.jar问题

  • 第五个问题:
bundletool.jar cannot be found
  • 下载安装bundletool.jar,bundletool.jar下载:
    在这里插入图片描述

  • 下载后为bundletool-all-1.15.6.jar重新命名为bundletool.jar,在android sdk目录下,新建bundle-tools目录,把bundletool.jar包放入其中:
    在这里插入图片描述

  • 配置环境,在用户和系统环境的path后都追加上述路径的环境:

D:\android-sdk-windows\bundle-tools
  • 修改环境变量中的 PATHTEXT 添加:;.JAR
    在这里插入图片描述
  • 验证也是ok了:
    在这里插入图片描述

14.6 gst-launch问题

  • 第六个问题:
gst-launch-1.0.exe and/or gst-inspect-1.0.exe cannot be found
  • 下载gst-launch-1.0.exe and gst-inspect-1.0.exe:gst下载地址:
    在这里插入图片描述
  • 双击下载的gstreamer-1.0-mingw-x86_64-1.22.7.msi
    在这里插入图片描述
  • 在这里插入图片描述
  • 增加环境变量:
F:\gstreamer\1.0\mingw_x86_64\bin
  • 验证是ok了:
    在这里插入图片描述

15 完整无报错的Appium信息

  • 所有的错误都排查后,完整的信息应该如下:
C:\Windows\System32>appium-doctor
WARN AppiumDoctor [Deprecated] Please use appium-doctor installed with "npm install @appium/doctor --location=global"
info AppiumDoctor Appium Doctor v.1.16.2
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: D:\nodejs\node.EXE
info AppiumDoctor  ✔ Node version is 20.10.0
info AppiumDoctor  ✔ ANDROID_HOME is set to: D:\android-sdk-windows
info AppiumDoctor  ✔ JAVA_HOME is set to: D:\jdk-11.0.8
info AppiumDoctor    Checking adb, android, emulator, apkanalyzer.bat
info AppiumDoctor      'adb' is in D:\android-sdk-windows\platform-tools\adb.exe
info AppiumDoctor      'android' is in D:\android-sdk-windows\tools\android.bat
info AppiumDoctor      'emulator' is in D:\android-sdk-windows\tools\emulator.exe
info AppiumDoctor      'apkanalyzer.bat' is in D:\android-sdk-windows\platform-tools\apkanalyzer.bat
info AppiumDoctor  ✔ adb, android, emulator, apkanalyzer.bat exist: D:\android-sdk-windows
info AppiumDoctor  ✔ 'bin' subfolder exists under 'D:\jdk-11.0.8'
info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor ### Diagnostic for optional dependencies starting ###
info AppiumDoctor  ✔ opencv4nodejs is installed at: D:\nodejs\node_global. Installed version is: 5.6.0
info AppiumDoctor  ✔ ffmpeg is installed at: D:\ffmpeg-6.1-essentials_build\bin\ffmpeg.EXE. ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
info AppiumDoctor  ✔ mjpeg-consumer is installed at: D:\nodejs\node_global. Installed version is: 2.0.0
info AppiumDoctor  ✔ bundletool.jar is installed at: D:\android-sdk-windows\bundle-tools\bundletool.jar
info AppiumDoctor  ✔ gst-launch-1.0.exe and gst-inspect-1.0.exe are installed at: F:\gstreamer\1.0\mingw_x86_64\bin\gst-launch-1.0.exe and F:\gstreamer\1.0\mingw_x86_64\bin\gst-inspect-1.0.exe
info AppiumDoctor ### Diagnostic for optional dependencies completed, no fix possible. ###
info AppiumDoctor
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

今天刷basic

一 在kali里边链接这个服务器 ssh -p 25199 rootnode4.buuoj.cn 然后回车 yes 输入密码123456 ls查看发现什么都没有,cd ..返回上一级目录 ls 发现有flag.txt 查看文件得到flag flag{477f20d3-acd3-46e1-b50a-633e58b769c7}

Python中读写(解析)JSON文件的深入探究

目录 一、引言 二、如何读取JSON文件 三、如何写入JSON文件 四、如何解析JSON字符串 五、错误处理和异常处理 六、使用第三方库提高效率 七、总结 一、引言 在Python中,我们经常使用JSON(JavaScript Object Notation)格式来存储和传输…

计算机速成课Crash Course - 08. 指令和程序

今天开始计算机速成课Crash Course的系列讲解。 更多技术文章,全网首发公众号 “摸鱼IT” 锁定 -上午11点 - ,感谢大家关注、转发、点赞! 计算机速成课Crash Course - 08. 指令和程序 08. 指令和程序 上集我们把 ALU, 控制单元, RAM, 时钟…

基于Java SSM框架实现超市进销存购物商城管理系统项目【项目源码+论文说明】

基于java的SSM框架实现超市进销存购物商城管理系统演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,社区生活超市管理系统当然也不能排除在外。社区生活超市管理系统…

【QT】容器类的迭代

迭代器(iterator)为访问容器类里的数据项提供了统一的方法,Qt有两种迭代器类:Java类型的迭代器和STL类型的迭代器。 Java类型的迭代器更易于使用,且提供一些高级功能,而STL类型的迭代器效率更高。 Qt还提供一个关键字foreach&…

ORACLE使用Mybatis-plus批量插入

ORACLE使用mybatis-plus自带的iservice.saveBatch方法时,会报DML Returing cannot be batch错误: 推测原因是oracle不支持insert into table_name (,) values (,),()的写法。且oracle不会自动生…

华为Watch Buds手表耳机声音小怎么办?试试这些方法

使用华为 WATCH Buds 的手表耳机的铁子们,你们有没有和我遇到同样的问题:刚用的时候音质超级好,但是用了一段时间后,偶尔会遇到耳机声音变小,甚至出现左右耳音量不一致的情况。 如果有的话,不用担心&#…

【libcurl库】安装及其编程访问百度首页(一)

一、Libcurl库简介 二、Libcurl等三方库的通用编译方法 库的配置、编译、安装 (1)安装位置的更改(2)编译、安装(3)预览 三、调用libcurl编程访问百度主页 编译(编译时链接库、头文件路径&am…

操作系统的特征

一、并发 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。 并行 :是指两个或多个事件同一事件发生。 操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看…

Hadoop学习笔记(HDP)-Part.20 安装Flume

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

java小工具util系列3:JSON转实体类对象工具

文章目录 准备工作1.JSONObject获取所有的key2.集合中实体对象转换 list中Enrey转Dto3.字符串转List<BusyTimeIndicatorAlarmThreshold>4.json字符串转JSONObject5.list根据ids数组过滤list6.json字符串转JavaBean对象7.json对象转javabean8.jsonObject转map9.List\<U…

微服务的利与弊

一、前言 自从大多数web架构从单体演进到服务拆分&#xff0c;到微服务一统天下的几年来&#xff0c;应该没有web应用不是微服务架构的吧。最开始是阿里的doubble分层架构&#xff0c;到后来的SpringCloud全家桶&#xff0c;还有各个大厂自己定义的一套服务治理框架。微服务无…

DS二分查找_搜索二维矩阵

Description 使用二分查找法来判断m*n矩阵matrix中是否存在目标值target。 该矩阵有以下特性&#xff1a; 1. 每行中的整数从左到右升序排列&#xff1b; 2. 每行的第一个整数大于前一行的最后一个整数。 Input 第一行输入m和n&#xff0c;分别表示矩阵的行数和列数&#…

python 自动发送邮件

对于工作中&#xff0c;如果每日需要发送具有规律性的邮件&#xff0c;采用python自动发送可以节约很多时间&#xff0c;提高效率。本文主要以腾讯企业邮箱为例&#xff0c;介绍python自动发送邮件&#xff08;含附件&#xff09;的功能。为保护隐私&#xff0c;代码中的邮箱及…

Edge调用Aria2下载

一、准备工作 1、Edge浏览器&#xff1a;Windows系统自带或点击下载&#xff1b;   2、Aria2 gui&#xff1a;点击github下载或自行搜索下载其他版本&#xff1b; 二、启动Aria2 gui 解压下载的Aria2 gui到任意目录&#xff0c;点击“Aria2c启动器”或“AriaNg启动器”皆可。…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《“无废”电–氢充能服务区多源微网优化运行模型》

这个文章标题涉及到“无废”电–氢充能服务区、多源微网和优化运行模型。下面我将对标题中的关键术语进行解读&#xff1a; “无废”电–氢充能服务区&#xff1a; 无废电&#xff08;Waste-free electricity&#xff09;&#xff1a; 这可能指的是通过某种方式生产的电力&…

从零开始学习 JS APL(六):完整指南和实例解析

学习目标&#xff1a; 1. 能够利用正则表达式校验输入信息的合法性 2. 具备利用正则表达式验证小兔鲜注册页面表单的能力 学习内容&#xff1a; 正则表达式 综合案例 阶段案例 学习时间&#xff1a; 周一至周五晚上 7 点—晚上9点周六上午 9 点-上午 11 点周日下午 3 点-下…

短视频系统设计:如何支持三千万用户同时在线看视频?

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 短视频&#xff08;short video&#xff09;通常时长在 15 分钟以内&#xff0c;主要是在移动智能终端上进行拍摄、美化编辑或加特效&#xff0c;并可以在网络社交平台上进行实时分享的一种新型视频形式。短视频具有时…

简单地将附件POST到Notes应用中

大家好&#xff0c;才是真的好。 这半年我们会讲很多开发知识&#xff0c;这篇紧接上篇《通过URL将HTML表单数据创建到Domino应用中》&#xff0c;讲述如何将附件POST到Note应用中。 原理是一样&#xff0c;首先&#xff0c;你得有一个表单&#xff0c;我们用html写一个&…

Android 缩减、混淆处理和优化应用

为了尽可能减小应用的大小&#xff0c;您应在发布 build 中启用缩减功能来移除不使用的代码和资源。启用缩减功能后&#xff0c;您还会受益于两项功能&#xff0c;一项是混淆处理功能&#xff0c;该功能会缩短应用的类和成员的名称&#xff1b;另一项是优化功能&#xff0c;该功…