JavaApp自动化测试系列[v1.0.0][Appium开发环境搭建]

Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。「原生应用」指那些用 iOS、 Android 或者 Windows SDKs 编写的应用。「移动 Web 应用」是用移动端浏览器访问的应用( Appium 支持 iOS 上的 Safari 、Chrome 和 Android 上的内置浏览器)。「混合应用」带有一个「webview」的包装器——用来和 Web 内容交互的原生控件

Appium 支持Selenium Webdriver支持的所有语言,例如Java、Ruby、Python、PHP、JavaScript 和 C#

Appium框架

  • 客户端和服务器:Appium客户端可以理解为发起命令的设备,通常来讲就是执行Appium测试代码的计算机,或者直接把Appium理解为测试代码(Java、Ruby、Python、PHP、JavaScript 和 C# ),只要它实现了WebDriver标准协议即可;Appium服务端 的核心一个是暴露 REST API 的 WEB 服务器,它主要是监听一个端口,接收由客户端发来的指令,并将这些指令翻译成移动端可以理解的形式并发送给移动端,然后移动端执行指令并将执行结果返回给Appium服务器,Appium服务器再把执行结果返回给客户端
  • 会话:自动化始终在一个会话的上下文中执行,这些客户端程序库以各自的方式发起与服务器的会话,但最终都会发给服务器一个 POST /session 请求,请求中包含一个被称作「预期能力(Desired Capabilities)」的 JSON 对象。这时服务器就会开启这个自动化会话,并返回一个用于发送后续命令的会话 ID
  • Desired Capabilities:是一些发送给 Appium 服务器的键值对集合(比如 map 或 hash),它告诉服务器我们想要启动什么类型的自动化会话。也有许多Capabilities可以修改服务器在自动化过程中行为
  • Bootstrap.jar:运行在Android手机上的一个应用程序,在手机上扮演TCP服务器的角色,当Appium服务器运行指令时,实际上是与Bootstrap.jar建立TCP通信,并把指令发给Bootstrap.jar,然后Bootstrap.jar执行测试

Appium环境搭建

安装JDK

下载JDK安装文件

官方下载地址下载JDK安装文件

配置环境变量
  • 配置系统变量:新建JAVA_HOME变量,变量值填写jdk的安装目录C:\Program Files\Java\jdk1.8.0_152
  • 配置系统变量:Path变量→编辑,在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
  • 配置系统变量:新建 CLASSPATH变量,变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
环境校验

CMD运行java -version、javac,如图所示,则表明上述安装配置成功

在这里插入图片描述

安装Node

用浏览器访问Node官方下载地址,选择合适的版本,这里不建议使用太新的版本,最好使用稳定版本然后双击下载的MSI文件进行安装,所有步骤都采用默认选项即可,然后启动CMD,输入node -vnpm验证Node安装,如下窗口所示表示安装成功
在这里插入图片描述
出现如上图信息,表示 node.js 安装成功。npm 是一个 node 包管理和分发工具,有了 npm,后面就可以输入指令在线安装 appium

安装安卓SDK

Android SDK是Google提供的Android开发工具,在做Android测试的时候需要使用SDK中的相关API,可以从官方下载地址,也可以从Android或者Android下载SDK的安装文件,下载完安装文件后,双击进行安装

Android SDK Tools Setup

安装Android SDK的前提是系统中已经安装好JDK,安装Android SDK的过程中会自动校验JDK
Android SDK Tools Setup

安装路径尽量不要使用默认路径,尽量自定义
Android SDK Tools Setup

安装Android API及工具类

Android SDK Manager

SDK配置环境变量
  • 系统变量新建:ANDROID_HOME对应变量值为C:\Android\android-sdk,这里要根据实际值进行配置
    ANDROID_HOME
  • path 添加两个变量,将以下箭头所指的两个文件路径添加到 path 里C:\Android\android-sdk\platform-toolsC:\Android\android-sdk\tools,当然也可以使用相对路径
    path
SDK环境校验

加粗样式

链接设备
  • 手机用数据线连电脑,可能需要先下载手机驱动安装,这个可以借助第三方软件,各种手机助手之类的安装,确认手机能连上
  • 打开 cmd 输入:adb devices,当屏幕上出现一串字符,后面显示 devices说明连接成功
    在这里插入图片描述
    如果只显示到List of devices attached,而没有显示设备的唯一标识及状态,大概率上是移动端USB调试没有成功开启
参数解释
  • 6EJ4C18A18000811:是个序列号,它是adb创建的字符串,通过它唯一的识别一个模拟器或者设备实例
  • device:表示状态,如果是offline则表示没有与adb相连接或者无法响应;如果是no device表示没有模拟器或设备运行;如果是device表示有模拟器或设备运行

安装Appium

通过安装包安装

Appium官方下载

Bitbucket Home

安装过程很简单,不需要做特殊的设置,有些机器可能缺少.Net Framework4.5,官方下载地址,搜一下然后下载安装​​,然后再安装Appium即可

环境变量配置
  • 添加系统变量变量名为APPIUM_HOME变量值为C:\Program Files (x86)\Appium
    APPIUM_HOME
  • 在Path中添加%APPIUM_HOME%\node_modules\.bin;
    Path
Appium环境验证

如果是从官网下载的Appium,新版本的Appium已经没有%APPIUM_HOME%\node_modules\.bin这个路径了,也就是上边配置环境变量的第二步是失败的,因此在验证环境的时候输入appium-doctor会提示不是XXX命令,如此就需要手动安装appium-doctor,我们已经安装好了node,它带了npm工具,使用这个工具就可以轻松安装appium-doctor了

使用命令npm install appium-doctor -g,这里带上参数-g便可以直接配上环境变量,无需后续手动配置了
在这里插入图片描述

然后在命令行输入appium-doctor如下类似窗口呈现且无报错信息则表示环境配置成功
在这里插入图片描述

如果是从Bitbucket Home下载的Appium,那么它是带%APPIUM_HOME%\node_modules\.bin的,也就是说系统环境变量的配置中第二步是成功的,则可以直接运行命令验证
在这里插入图片描述

通过命令行方式安装
  • 安装好了Node之后就可以使用npm命令,使用官方地址安装则执行命令:npm intall appium -g
  • 官方地址非常慢,可以使用npm的镜像地址,首先安装源地址:npm config set registry https://registry.npm.taobao.org,然后再使用npm intall appium -g

除了安装appium外,npm还可以有很多作用,例如

  • 安装chromedriver:npm install appium -g --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
  • 指定版本安装则执行命令:npm intall -g appium@1.6.3
  • 安装成功后仍旧使用appium-doctor来验证安装

除了npm外,还可以使用cnpm,这个方式要快很多

使用cnpm,用taobao的镜像,首先安装cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org
使用cnpm安装appiumcnpm install -g appium --no-cache
使用cnpm安装appium-doctorcnpm install appium-doctor -g
安装成功后,通过appium -v 查看当前appium版本,直接输入appium则启动appium server端

安装appium
C:\Users\Administrator>cnpm install appium -g
Downloading appium to C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium_tmp
Copying C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium_tmp\_appium@1.18.1@appium to C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium
Installing appium's dependencies to C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium/node_modules
[1/30] @babel/runtime@^7.6.0 installed at node_modules\_@babel_runtime@7.11.2@@babel\runtime
[2/30] appium-uiautomator2-driver@^1.37.1 existed at node_modules\_appium-uiautomator2-driver@1.57.0@appium-uiautomator2-driver
[3/30] appium-windows-driver@1.x installed at node_modules\_appium-windows-driver@1.13.0@appium-windows-driver
[4/30] appium-xcuitest-driver@^3.22.0 existed at node_modules\_appium-xcuitest-driver@3.25.1@appium-xcuitest-driver
[5/30] appium-fake-driver@^1.x installed at node_modules\_appium-fake-driver@1.0.1@appium-fake-driver
[6/30] appium-android-driver@^4.20.0 installed at node_modules\_appium-android-driver@4.39.0@appium-android-driver
[7/30] async-lock@^1.0.0 existed at node_modules\_async-lock@1.2.4@async-lock
[8/30] asyncbox@2.x existed at node_modules\_asyncbox@2.6.0@asyncbox
[9/30] axios@^0.19.2 existed at node_modules\_axios@0.19.2@axios
[10/30] bluebird@3.x existed at node_modules\_bluebird@3.7.2@bluebird
[11/30] argparse@^1.0.10 installed at node_modules\_argparse@1.0.10@argparse
[12/30] appium-mac-driver@1.x installed at node_modules\_appium-mac-driver@1.10.0@appium-mac-driver
[13/30] dateformat@^3.0.3 installed at node_modules\_dateformat@3.0.3@dateformat
[14/30] lodash@^4.17.11 existed at node_modules\_lodash@4.17.20@lodash
[15/30] find-root@^1.1.0 installed at node_modules\_find-root@1.1.0@find-root
[16/30] npmlog@4.x existed at node_modules\_npmlog@4.1.2@npmlog
[17/30] semver@^7.0.0 existed at node_modules\_semver@7.3.2@semver
[18/30] source-map-support@0.x existed at node_modules\_source-map-support@0.5.19@source-map-support
[19/30] teen_process@1.x existed at node_modules\_teen_process@1.15.0@teen_process
[20/30] longjohn@^0.2.12 installed at node_modules\_longjohn@0.2.12@longjohn
[21/30] continuation-local-storage@3.x installed at node_modules\_continuation-local-storage@3.2.1@continuation-local-storage
[22/30] appium-ios-driver@4.x installed at node_modules\_appium-ios-driver@4.7.0@appium-ios-driver
[23/30] word-wrap@^1.2.3 installed at node_modules\_word-wrap@1.2.3@word-wrap
[24/30] appium-base-driver@^6.0.1 installed at node_modules\_appium-base-driver@6.2.3@appium-base-driver
[25/30] winston@3.x installed at node_modules\_winston@3.3.3@winston
[26/30] appium-youiengine-driver@^1.2.0 installed at node_modules\_appium-youiengine-driver@1.2.6@appium-youiengine-driver
[27/30] appium-tizen-driver@^1.1.1-beta.4 installed at node_modules\_appium-tizen-driver@1.1.1-beta.5@appium-tizen-driver
[28/30] appium-espresso-driver@^1.0.0 installed at node_modules\_appium-espresso-driver@1.33.0@appium-espresso-driver
[29/30] appium-flutter-driver@^0 installed at node_modules\_appium-flutter-driver@0.0.25@appium-flutter-driver
[30/30] appium-support@2.x installed at node_modules\_appium-support@2.48.1@appium-support
execute post install 4 scripts...
[1/4] scripts.install appium-windows-driver@1.x run "node install-npm.js", root: "C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\appium\\node_modules\\_appium-windows-driver@1.13.0@appium-windows-driver"
info WinAppDriver WinAppDriver doesn't exist, setting up
info WinAppDriver Downloading https://github.com/Microsoft/WinAppDriver/releases/download/v1.2-RC/WindowsApplicationDriver.msi to 'C:\Users\ADMINI~1\AppData\Local\Temp\1c7aa524-6ded-486c-9b62-4019258e0d3f.msi'
dbug Support https://github.com/Microsoft/WinAppDriver/releases/download/v1.2-RC/WindowsApplicationDriver.msi (3.74 MB) has been downloaded to 'C:\Users\ADMINI~1\AppData\Local\Temp\1c7aa524-6ded-486c-9b62-4019258e0d3f.msi' in 15.887s
dbug Support Approximate download speed: 241.20 KB/s
info WinAppDriver Running MSI installer...
[1/4] scripts.install appium-windows-driver@1.x finished in 19s
[2/4] scripts.postinstall appium-flutter-driver@0.0.25 › appium-uiautomator2-driver@1.57.0 › appium-chromedriver@^4.23.1 run "node install-npm.js", root: "C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\appium\\node_modules\\_appium-chromedriver@4.25.1@appium-chromedriver"
[16:28:51] [Chromedriver Install] Installing Chromedriver version '84.0.4147.30' for platform 'win' and architecture '32'
[16:28:51] [Chromedriver Install] Opening temp file to write 'chromedriver_win32' to...
[16:28:51] [Chromedriver Install] Opened temp file 'C:\Users\ADMINI~1\AppData\Local\Temp\2020724-167296-1eh8os7.j0vri\chromedriver_win32.zip'
[16:28:51] [Chromedriver Install] Downloading https://cdn.npm.taobao.org/dist/chromedriver/84.0.4147.30/chromedriver_win32.zip to 'C:\Users\ADMINI~1\AppData\Local\Temp\2020724-167296-1eh8os7.j0vri\chromedriver_win32.zip'
dbug Support https://cdn.npm.taobao.org/dist/chromedriver/84.0.4147.30/chromedriver_win32.zip (4.63 MB) has been downloaded to 'C:\Users\ADMINI~1\AppData\Local\Temp\2020724-167296-1eh8os7.j0vri\chromedriver_win32.zip' in 7.536s
dbug Support Approximate download speed: 628.60 KB/s
[16:28:59] [Chromedriver Install] Extracting C:\Users\ADMINI~1\AppData\Local\Temp\2020724-167296-1eh8os7.j0vri\chromedriver_win32.zip to C:\Users\ADMINI~1\AppData\Local\Temp\2020724-167296-1eh8os7.j0vri\chromedriver_win32
[16:28:59] [Chromedriver Install] Creating C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_appium-chromedriver@4.25.1@appium-chromedriver\chromedriver\win...
[16:28:59] [Chromedriver Install] Copying unzipped binary, reading from C:\Users\ADMINI~1\AppData\Local\Temp\2020724-167296-1eh8os7.j0vri\chromedriver_win32\chromedriver.exe...
[16:28:59] [Chromedriver Install] Writing to C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_appium-chromedriver@4.25.1@appium-chromedriver\chromedriver\win\chromedriver.exe...
[16:28:59] [Chromedriver Install] C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_appium-chromedriver@4.25.1@appium-chromedriver\chromedriver\win\chromedriver.exe successfully put in place
[2/4] scripts.postinstall appium-flutter-driver@0.0.25 › appium-uiautomator2-driver@1.57.0 › appium-chromedriver@^4.23.1 finished in 9s
[3/4] scripts.postinstall appium-tizen-driver@1.1.1-beta.5 › jimp@0.5.6 › core-js@^2.5.7 run "node -e \"try{require('./postinstall')}catch(e){}\"", root: "C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\appium\\node_modules\\_core-js@2.6.11@core-js"
Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)

[3/4] scripts.postinstall appium-tizen-driver@1.1.1-beta.5 › jimp@0.5.6 › core-js@^2.5.7 finished in 96ms
[4/4] scripts.postinstall appium-support@2.48.1 › jimp@0.10.3 › core-js@^3.4.1 run "node -e \"try{require('./postinstall')}catch(e){}\"", root: "C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\appium\\node_modules\\_core-js@3.6.5@core-js"
[4/4] scripts.postinstall appium-support@2.48.1 › jimp@0.10.3 › core-js@^3.4.1 finished in 95ms
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_types@0.5.4@@jimp\types unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_gif@0.5.0@@jimp\gif unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_jpeg@0.5.4@@jimp\jpeg unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-displace@0.5.0@@jimp\plugin-displace unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-blur@0.5.0@@jimp\plugin-blur unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/plugin-crop@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-cover@0.5.4@@jimp\plugin-cover unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-crop(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-crop@0.5.4@@jimp\plugin-crop unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-gaussian@0.5.0@@jimp\plugin-gaussian unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-dither@0.5.0@@jimp\plugin-dither unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-cover@0.5.4@@jimp\plugin-cover unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_bmp@0.5.4@@jimp\bmp unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-contain@0.5.4@@jimp\plugin-contain unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_png@0.5.4@@jimp\png unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-color@0.5.5@@jimp\plugin-color unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-flip@0.5.0@@jimp\plugin-flip unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/plugin-blit@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-contain@0.5.4@@jimp\plugin-contain unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-blit(0.10.3)
peerDependencies link @jimp/plugin-resize@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-contain@0.5.4@@jimp\plugin-contain unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-resize(0.10.3)
peerDependencies link @jimp/plugin-resize@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-cover@0.5.4@@jimp\plugin-cover unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-resize(0.10.3)
peerDependencies link @jimp/plugin-scale@0.5.0 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-contain@0.5.4@@jimp\plugin-contain unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-scale(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-blit@0.5.4@@jimp\plugin-blit unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/plugin-scale@0.5.0 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-cover@0.5.4@@jimp\plugin-cover unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-scale(0.10.3)
peerDependencies link @jimp/plugin-resize@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-scale@0.5.0@@jimp\plugin-scale unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-resize(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-resize@0.5.4@@jimp\plugin-resize unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/plugin-crop@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-rotate@0.5.4@@jimp\plugin-rotate unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-crop(0.10.3)
peerDependencies link @jimp/plugin-blit@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-rotate@0.5.4@@jimp\plugin-rotate unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-blit(0.10.3)
peerDependencies link @jimp/plugin-rotate@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-flip@0.5.0@@jimp\plugin-flip unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-rotate(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-scale@0.5.0@@jimp\plugin-scale unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugins@0.5.5@@jimp\plugins unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-rotate@0.5.4@@jimp\plugin-rotate unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_tiff@0.5.4@@jimp\tiff unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-normalize@0.5.4@@jimp\plugin-normalize unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-mask@0.5.4@@jimp\plugin-mask unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-invert@0.5.0@@jimp\plugin-invert unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies link @jimp/plugin-resize@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-rotate@0.5.4@@jimp\plugin-rotate unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-resize(0.10.3)
peerDependencies link @jimp/plugin-blit@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-print@0.5.4@@jimp\plugin-print unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\plugin-blit(0.10.3)
peerDependencies link @jimp/custom@0.5.4 in C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\_@jimp_plugin-print@0.5.4@@jimp\plugin-print unmet with C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\@jimp\custom(0.10.3)
peerDependencies WARNING appium-base-driver@6.2.3 › ws@^7.0.0 requires a peer of bufferutil@^4.0.1 but none was installed
peerDependencies WARNING appium-base-driver@6.2.3 › ws@^7.0.0 requires a peer of utf-8-validate@^5.0.2 but none was installed
deprecate appium-mac-driver@1.10.0 › appium-base-driver@5.8.1 › request-promise@^4.2.5 request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
deprecate appium-tizen-driver@1.1.1-beta.5 › appium-base-driver@4.5.1 › request@2.88.2 › har-validator@~5.1.3 this library is no longer supported
deprecate appium-flutter-driver@0.0.25 › rpc-websockets@5.3.1 › circular-json@^0.5.9 CircularJSON is in maintenance only, flatted is its successor.
deprecate appium-tizen-driver@1.1.1-beta.5 › jimp@0.5.6 › core-js@^2.5.7 core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
deprecate appium-tizen-driver@1.1.1-beta.5 › jimp@0.5.6 › @jimp/custom@0.5.4 › @jimp/core@0.5.4 › mkdirp@0.5.1 Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
Recently updated (since 2020-08-17): 10 packages (detail see file C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\.recently_updates.txt)
  Today:
    → appium-base-driver@6.2.3 › webdriverio@^6.0.2(6.4.1) (16:16:42)
    → appium-base-driver@6.2.3 › webdriverio@6.4.1 › devtools@6.4.1(6.4.1) (16:16:37)
    → appium-base-driver@6.2.3 › webdriverio@6.4.1 › webdriver@6.4.1(6.4.1) (16:16:37)
  2020-08-22
    → appium-ios-driver@4.7.0 › appium-ios-simulator@3.23.0 › fkill@7.0.1 › aggregate-error@^3.0.0(3.1.0) (06:29:47)
    → appium-base-driver@6.2.3 › webdriverio@6.4.1 › webdriver@6.4.1 › got@11.5.2 › @sindresorhus/is@^3.0.0(3.1.2) (06:25:07)
  2020-08-21
    → appium-ios-driver@4.7.0 › appium-ios-simulator@^3.21.0(3.23.0) (14:24:17)
  2020-08-20
    → appium-fake-driver@1.0.1 › appium-base-driver@^7.0.0(7.2.0) (12:17:52)
    → appium-ios-driver@4.7.0 › appium-ios-simulator@3.23.0 › node-simctl@^6.3.0(6.3.0) (16:52:07)
  2020-08-18
    → appium-flutter-driver@0.0.25 › appium-uiautomator2-driver@1.57.0 › appium-chromedriver@^4.23.1(4.25.1) (13:31:00)
  2020-08-17
    → appium-base-driver@6.2.3 › webdriverio@6.4.1 › @types/puppeteer@3.0.1 › @types/node@*(14.6.0) (22:34:03)
All packages installed (642 packages installed from npm registry, used 2m(network 2m), speed 404.2kB/s, json 512(1.47MB), tarball 44.6MB)
[appium@1.18.1] link C:\Users\Administrator\AppData\Roaming\npm\appium@ -> C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\build\lib\main.js
[appium@1.18.1] link C:\Users\Administrator\AppData\Roaming\npm\authorize-ios@ -> C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\.bin\authorize-ios
安装appium-doctor
C:\Users\Administrator>cnpm install appium-doctor -g
Downloading appium-doctor to C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium-doctor_tmp
Copying C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium-doctor_tmp\_appium-doctor@1.15.3@appium-doctor to 
C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium-doctor
Installing appium-doctor's dependencies to C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium-doctor/node_modules
[1/11] colors@^1.1.2 installed at node_modules\_colors@1.4.0@colors
[2/11] bluebird@^3.5.1 installed at node_modules\_bluebird@3.7.2@bluebird
[3/11] @babel/runtime@^7.0.0 installed at node_modules\_@babel_runtime@7.11.2@@babel\runtime
[4/11] lodash@^4.17.10 installed at node_modules\_lodash@4.17.20@lodash
[5/11] teen_process@^1.3.1 installed at node_modules\_teen_process@1.15.0@teen_process
[6/11] source-map-support@^0.5.6 installed at node_modules\_source-map-support@0.5.19@source-map-support
[7/11] yargs@^15.0.1 installed at node_modules\_yargs@15.4.1@yargs
[8/11] authorize-ios@^1.0.3 installed at node_modules\_authorize-ios@1.2.1@authorize-ios
[9/11] appium-adb@^8.4.0 installed at node_modules\_appium-adb@8.6.3@appium-adb
[10/11] inquirer@^7.0.0 installed at node_modules\_inquirer@7.3.3@inquirer
[11/11] appium-support@^2.5.0 installed at node_modules\_appium-support@2.48.1@appium-support
execute post install 1 scripts...
[1/1] scripts.postinstall appium-support@2.48.1 › jimp@0.10.3 › core-js@^3.4.1 run "node -e \"try{require('./postinstall')}catch(e){}\"", root: "C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\appium-doctor\\node_modules\\_core-js@3.6.5@core-js"
[1/1] scripts.postinstall appium-support@2.48.1 › jimp@0.10.3 › core-js@^3.4.1 finished in 84ms
deprecate authorize-ios@^1.0.3 Moved into appium
All packages installed (258 packages installed from npm registry, used 30s(network 29s), speed 460.64kB/s, json 235(736.4kB), tarball 12.54MB)
[appium-doctor@1.15.3] link C:\Users\Administrator\AppData\Roaming\npm\appium-doctor@ -> C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium-doctor\appium-doctor.js
检查Appium环境
C:\Users\Administrator>appium-doctor
info AppiumDoctor Appium Doctor v.1.15.3
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: C:\Program Files\nodejs\node.EXE
info AppiumDoctor  ✔ Node version is 10.22.0
info AppiumDoctor  ✔ ANDROID_HOME is set to: C:\Android\android-sdk
info AppiumDoctor  ✔ JAVA_HOME is set to: C:\Program Files\Java\jdk1.8.0_261
info AppiumDoctor    Checking adb, android, emulator
info AppiumDoctor      'adb' is in C:\Android\android-sdk\platform-tools\adb.exe
info AppiumDoctor      'android' is in C:\Android\android-sdk\tools\android.bat
info AppiumDoctor      'emulator' is in C:\Android\android-sdk\tools\emulator.exe
info AppiumDoctor  ✔ adb, android, emulator exist: C:\Android\android-sdk
info AppiumDoctor  ✔ Bin directory of %JAVA_HOME% is set
info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor ### Diagnostic for optional dependencies starting ###
WARN AppiumDoctor  ✖ opencv4nodejs cannot be found.
WARN AppiumDoctor  ✖ ffmpeg cannot be found
info AppiumDoctor  ✔ mjpeg-consumer is installed at: C:\Users\Administrator\AppData\Roaming\npm. Installed version is: 2.0.0
WARN AppiumDoctor  ✖ bundletool.jar cannot be found
WARN AppiumDoctor  ✖ gst-launch-1.0.exe and/or gst-inspect-1.0.exe cannot be found
info AppiumDoctor ### Diagnostic for optional dependencies completed, 4 fixes possible. ###
info AppiumDoctor
info AppiumDoctor ### Optional Manual Fixes ###
info AppiumDoctor The configuration can install optionally. Please do the following manually:
WARN AppiumDoctor  ➜ Why opencv4nodejs is needed and how to install it: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/image-comparison.md
WARN AppiumDoctor  ➜ ffmpeg is needed to record screen features. Please read https://www.ffmpeg.org/ to install it
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
info AppiumDoctor
info AppiumDoctor ###
info AppiumDoctor
info AppiumDoctor Bye! Run appium-doctor again when all manual fixes have been applied!
info AppiumDoctor
启动Appium
C:\Users\Administrator>appium
[Appium] Welcome to Appium v1.18.1
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

成功版本配置

因为各个工具版本繁多,多个工具间就存在兼容性问题,否则环境安装配置不成功的例子也非常多,比较成功的环境搭配

  • 在BitbucketHome下载的AppiumForWindows_1_4_16_1版本和Node8
  • 在Appium官网下载的appium-desktop-Setup-1.2.3.exe版本和Node6

Python环境

在CMD中运行 pip install Appium-Python-Client

Microsoft Windows [版本 10.0.19045.3693]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>pip install Appium-Python-Client
Collecting Appium-Python-Client
  Downloading Appium-Python-Client-3.1.0.tar.gz (3.4 MB)
     ---------------------------------------- 3.4/3.4 MB 297.9 kB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: selenium~=4.12 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from Appium-Python-Client) (4.15.2)
Requirement already satisfied: urllib3<3,>=1.26 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from urllib3[socks]<3,>=1.26->selenium~=4.12->Appium-Python-Client) (2.0.7)
Requirement already satisfied: trio~=0.17 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from selenium~=4.12->Appium-Python-Client) (0.23.1)
Requirement already satisfied: trio-websocket~=0.9 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from selenium~=4.12->Appium-Python-Client) (0.11.1)
Requirement already satisfied: certifi>=2021.10.8 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from selenium~=4.12->Appium-Python-Client) (2023.7.22)
Requirement already satisfied: attrs>=20.1.0 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from trio~=0.17->selenium~=4.12->Appium-Python-Client) (23.1.0)
Requirement already satisfied: sortedcontainers in c:\users\administrator\appdata\roaming\python\python312\site-packages (from trio~=0.17->selenium~=4.12->Appium-Python-Client) (2.4.0)
Requirement already satisfied: idna in c:\users\administrator\appdata\roaming\python\python312\site-packages (from trio~=0.17->selenium~=4.12->Appium-Python-Client) (3.4)
Requirement already satisfied: outcome in c:\users\administrator\appdata\roaming\python\python312\site-packages (from trio~=0.17->selenium~=4.12->Appium-Python-Client) (1.3.0.post0)
Requirement already satisfied: sniffio>=1.3.0 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from trio~=0.17->selenium~=4.12->Appium-Python-Client) (1.3.0)
Requirement already satisfied: cffi>=1.14 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from trio~=0.17->selenium~=4.12->Appium-Python-Client) (1.16.0)
Requirement already satisfied: wsproto>=0.14 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from trio-websocket~=0.9->selenium~=4.12->Appium-Python-Client) (1.2.0)
Requirement already satisfied: pysocks!=1.5.7,<2.0,>=1.5.6 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from urllib3[socks]<3,>=1.26->selenium~=4.12->Appium-Python-Client) (1.7.1)
Requirement already satisfied: pycparser in c:\users\administrator\appdata\roaming\python\python312\site-packages (from cffi>=1.14->trio~=0.17->selenium~=4.12->Appium-Python-Client) (2.21)
Requirement already satisfied: h11<1,>=0.9.0 in c:\users\administrator\appdata\roaming\python\python312\site-packages (from wsproto>=0.14->trio-websocket~=0.9->selenium~=4.12->Appium-Python-Client) (0.14.0)
Building wheels for collected packages: Appium-Python-Client
  Building wheel for Appium-Python-Client (pyproject.toml) ... done
  Created wheel for Appium-Python-Client: filename=Appium_Python_Client-3.1.0-py3-none-any.whl size=337588 sha256=d29b618102d0b617d4b42076d3b21df506d701b10f3669ae5079861b7261e24a
  Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\f9\96\78\c77d7a11d58afb91cf95104558a38e4e56745a8590177f71da
Successfully built Appium-Python-Client
Installing collected packages: Appium-Python-Client
Successfully installed Appium-Python-Client-3.1.0

示例代码

'''
@Time    : 2018/11/12 13:37
@Author  : davieyang
@Software: PyCharm
@Description:
'''
# encoding = utf-8
from appium import webdriver
import time
import unittest
 
 
class test_ClickButon(unittest.TestCase):
def setUp(self):
        desired_caps = {
'platformName': 'Android',
                    'deviceName': '30d4e606',
                    'platformVersion': '5.0',
                    'appPackage': 'com.tencent.qqpimsecure',
                    'appActivity': 'com.tencent.server.fore.QuickLoadActivity'
                    }
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
 
def test_ClickButton(self):
        driver = self.driver
        driver.find_element_by_id("com.tencent.mobileqq:id/btn_login").click()

​​​​​​​​​​​​​​​​​​​​

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Davieyang.D.Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值