Appium 一点一点学 Appium 的使用

codeskyblue · 2018年05月17日 · 最后由 美小霸王 回复于 2018年05月22日 · 2444 次阅读

安装 Appium Desktop

通常为了简单的使用,直接下载 Appium Desktop 就好了,很多都系都封装好了。原始下载地址 百度网盘下载地址

安装完 Appium Desktop,还需要安装 Android Studio(其实主要是用它来安装 Android SDK),顺便也能开发下安卓应用什么的。

原始 Android Studio 下载地址 百度网盘下载地址

Android Studio 安装完之后,第一次打开,之后会提示下载 Android SDK,不过因为国内的网络问题下载不动,所以需要先配置个代理。有 HTTP 代理,或者 Socks5 代理。
总共需要下载 1G 以内的数据(所以需要找个好的网络)。包括 platform-tools, avd emulator

代理配置界面。

testerhome 提供的 http 代理地址是 http://xxx.xxx.81.122:6$(date +%m%d) %m%d代表月和日。假设今天是 5 月 17 号,代理地址就是http://xxx.xxx.81.122:60517

Mac 上所有的内容默认会下载到 $HOME/Library/Android/sdk目录,这个就是ANDROID_HOME的位置,设置一下环境变量。

appium 命令行版本

为了持续集成方便,有些人可能还是更喜欢命令行的 appium

安装方法

  1. 设置 taobao 的 npm 代理 (有人可能会更喜欢用 cnpm,不过我还是喜欢用 npm,因为可以少打一个字母 c)
npm config set registry https://registry.npm.taobao.org/
npm config set disturl https://npm.taobao.org/dist
  1. npm 直接安装 appium
npm i -g appium

需要等待一下下,直接命令行运行 appium 就运行起来了

Appium Desktop 的简单实用

打开之后,先点击启动 Server,随后点击右上角的那个放大镜(Inspector)。

我用的是微信测试。下面是会用到的配置。具体的每项配置的内容需要看这里 Desired Capabilities Documentation 这个英文文档写的也不怎么低。我等下给两个常用的例子。

{
  "platformName": "Android",
  "deviceName": "WhatEver",
  "automationName": "UiAutomator2",
  "udid": "NX529J",
  "appPackage": "com.tencent.mm",
  "appActivity": ".ui.LauncherUI"
}
  • udid 是序列号,通过adb devices可以查看到。只有一个设备的话,也可以不写 udid
  • deviceName 看文档上写的,这个字段是必需的,但是程序会忽略该字段,所以随便填。
  • automationName 目前 默认是Appium ,其他可选的是 SelendroidUiAutomator2 or Espresso

其中的appPackageappActivity怎么获取呢?

  1. 先把应用打开
  2. 命令行执行 adb shell dumpsys activity activities | grep mFocusedActivity

输出示例:

mFocusedActivity: ActivityRecord{931a882 u0 com.tencent.mm/.ui.LauncherUI t553}
  • 其中的 com.tencent.mm/.ui.LauncherUI 就是当前处于前台的 Activity。

那个默认的 automationName(Appium) 其实就是 uiautomator1

如果你需要每次都安装 apk,也可以这样子写。(这里我用了网易云音乐的 apk)

{
  "platformName": "Android",
  "deviceName": "WhatEver",
  "app": "/Users/codeskyblue/Downloads/CloudMusic_official_5.1.1.923682.apk"
}

没写 udid 是因为我电脑上就连接了一台设备。
写了 app 就不用写appPackageappActivity了,appium 会使用aapt工具分析 apk 获取这些信息的。

启动完 Inspector 就可以看下下面的图片了。(我用的是 Appium1.5.0 可能最新版的界面会更好看一点)

Appium desktop 中的自动录制功能

这是个比较有意思的功能,点击录制

接下来在界面上选择要点击的位置,选择 Tap,就可以执行点击操作,并且自动生成测试代码

appium 做的不好的是那个 xpath,实在是有点太长了。

命令行执行生成的代码

选中哪个像外链一样的按钮,appium desktop 就会生成一个完整可以直接运行的 python 代码了。

将其中的代码拷贝到外部的文件中,比如 music.py

先安装 python 库Appium-Python-Client

pip install --user Appium-Python-Client

随后命令行运行 python music.py

实践的时候发现通过命令行获取到的网易云音乐的appPackageappActivity appium 不能正常的启动应用,而是直接报错了,命令行测试了一下也是报错。
有人查到了原因,是因为部分 https://blog.csdn.net/lazyer_dog/article/details/46050211

知道了原因还是很难搞,很头疼,直接拿出了我的 atx,去分析默认的 activity 吧

(venv) codeskyblue:~/tmp$ python -matx apkparse ~/Downloads/CloudMusic_official_5.1.1.923682.apk 
{
    "version": {
        "code": "117", 
        "name": "5.1.1"
    }, 
    "main_activity": "com.netease.cloudmusic.activity.LoadingActivity", 
    "package_name": "com.netease.cloudmusic"
}

参考文章

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 11 条回复 时间 点赞

😳 atx 不要啦?

师夷长技以制夷

codeskyblue 回复

也是。是我 low 了

这是在备课吗

程明远 回复

算是吧,写一遍加强记忆

图方便的话 直接 sdk 工具 装一下就好了

codeskyblue 回复

你是不是在推 atx 时被其他挑战了?

0x88 回复

目前尚未看到对手

0x88 回复

真的是要备课

codeskyblue 回复

什么时候开课啊,是网络课程吗?😀

学习了

—— 来自 TesterHome 官方 安卓客户端

codeskyblue 专栏文章:2018年 终总结 中提及了此贴 02月18日 10:26
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册