移动端

Appium 安卓自动化(环境搭建)

2022-08-03  本文已影响0人  狄仁杰666

前言

来啦老铁!

近期在研究项目上的手机端浏览器的自动化,团队里的大佬已经帮忙在远程机器启动好 appium 服务,并绑定到内部设备分发管理平台,而我完成的部分是:

笔者在手机端自动化的领域经验还是相对比较缺乏,因此打算用几篇文章记录一下探索过程,东西应该会相对比较浅、面向初学者,欢迎来踩~

今天我们先学习记录一下安卓端~

学习路径

  1. 安装 appium 模块;
  2. 下载安装 Android SDK;
  3. 设置 Android SDK 环境变量;
  4. 创建安卓虚拟机;
  5. 启动安卓虚拟机;
  6. 获取安卓虚拟机的 udid;
  7. 启动 appium server;
  8. 自动化脚本部分的处理;
  9. 运行自动化脚本;

1. 安装 appium 模块;

npm install -g appium

2. 下载安装 Android SDK;

3. 设置 Android SDK 环境变量;

在没有设置 Android SDK 环境变量的前提下,如果运行正常脚本,则会出现如下报错:

An unknown server-side error occurred while processing the command. Original error: Neither ANDROID_HOME nor ANDROID_SDK_ROOT environment variable was exported. Read https://developer.android.com/studio/command-line/variables for more details

报错

很明显,报错中已经告知我们,未暴露 ANDROID_HOME 或 ANDROID_SDK_ROOT 环境变量,因此,我们需要设置该环境变量;

vim ~/.bash_profile
export ANDROID_HOME=/Users/dylan.z.zhang/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/tools/bin
export PATH=${PATH}:${ANDROID_HOME}/tools/lib/x86_64

export PATH=${PATH}:${ANDROID_HOME}/build-tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/build-tools/31.0.0
添加环境变量

build-tools/31.0.0 是安卓构建工具集,我们可以打开 /Users/dylan.z.zhang/Library/Android/sdk/build-tools 文件夹,我选择最大版本 31.0.0(很久没玩 Android 了,这些文件夹是以前操作遗留下来的);

安卓构建工具集

a. 按键盘的 esc 按钮;
b. ~/.bash_profile 文件中输入如下文本并回车,完成保存;

:wq!
source ~/.bash_profile

4. 创建安卓虚拟机;

a. 命令行模式需要在 sdk/tools/bin 下执行 android create avd 等命令操作安卓虚拟机;
b. 从网络上得知,AVD Manager GUI 只能在 Android Studio 中使用;

笔者更倾向于使用 GUI 模式,我们一起来试看看~

我们需要下载安装 Android Studio,此处省略,请读者自行下载安装;

AVD Manager GUI AVD Manager 会话窗 选择设备类型、设备型号

例如我们选择安卓系统镜像版本为 Android 11.0;

下载安卓系统镜像

镜像有点大,像 Android 11.0 有 1G 多,网络不是特别好的朋友需要耐心等待一下~

选择安卓系统镜像 修改虚拟机设置

a. 在 AVD Manager 会话窗口,我们可以看到我们的安卓虚拟机,如:

生成的安卓虚拟机

b. 我们还可以使用命令行命令来查看我们的安卓虚拟机:

emulator -list-avds
命令行命令查看安卓虚拟机

5. 启动安卓虚拟机;

启动安卓虚拟机

(命令行启动安卓虚拟机更容易满足自动化测试在各个方面的特殊需求)。

emulator @pixel2 -skip-adb-auth -allow-host-audio -port 5554 -no-snapshot -no-boot-anim -memory 3072 -partition-size 8192
安卓虚拟机

6. 获取安卓虚拟机的 udid;

自动化测试中,我们需要指定哪个安卓设备进行页面操作,因此,需要获取所需设备的 udid。

adb devices
获取安卓虚拟机的 udid

7. 启动 appium server;

appium

注意:

An unknown server-side error occurred while processing the command. Original error: No Chromedriver found that can automate Chrome '83.0.4103'. You could also try to enable automated chromedrivers download server feature. See https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md for more details

No Chromedriver found

则此时我们需要去寻找与之匹配的 chromedriver 并下载,而更简单的方式是在启动 appium server 的时候就允许自动下载 chromedriver,由 appium 接管,如下~

appium --allow-insecure chromedriver_autodownload
启动 appium server 自动下载 chromedriver

8. 自动化脚本部分的处理;

这部分实际上不是要介绍写脚本,而是要介绍 wdio 相关的配置应该是怎么样的,大家使用的语言可能不一定是跟我一样是 node.js,但最终,相关配置和值,应该是类似:

hostname: 'localhost',
port: 4723,
path: '/wd/hub'
{
    platformName: 'Android',
    automationName: 'UiAutomator2',
    browserName: 'Chrome',
    platformVersion: '11',
    deviceName: 'pixel2',
    udid: 'emulator-5554'
}

9. 运行脚本;

运行脚本 - 1 运行脚本 - 2

如果你能看到虚拟机上开始打开浏览器并执行脚本了,那么恭喜您,跟我一样完成了今天的学习和实践~

Appium + uiautomator 作为脚本与安卓手机交互的桥梁,搞定这个桥梁就搞定了安卓手机自动化的一大部分~
(这样的自动化,原理 = 脚本 + 翻译官 + 桥梁 + 设备)

a. 查看端口占用的进程号,4723 为端口号,自行改为想要的端口号;

lsof -i tcp:4723

b. 删除进程,xxxx 为进程号;

kill -9 xxxx

如文章开始所说,本文介绍的东西应该会相对比较浅、面向初学者,其中也可能伴随考虑不周的地方,望您不吝指正,我也将继续研究学习~

能力有限,欢迎指正、互相交流,感谢~

如果本文对您有帮助,麻烦点赞、关注!

感谢~

上一篇下一篇

猜你喜欢

热点阅读