本文使用 Windows7 64bit 操作系统。如果你的操作系统不是 64 位的,不可直接使用下文中提供的地址。但是文末给出了各个软件对应操的作系统下载链接,请根据自己的系统自行选择对应的下载,以免误伤自己,毕竟折腾很容易受伤。

Python 的安装

Python 的安装方式有很多,这里选择 Anaconda 安装, Anaconda 是一个用于科学计算的 Python 发行版,包含了众多流行的科学计算、数据分析的 Python 包。使用起来比较方便。 点击Anaconda3-5.2.0-Windows-x86_64.exe下载,由于官网在国外下载速度非常慢,所以这里使用清华镜像来下载。 下载好之后,一路点击下一步,稍等片刻完成安装。

Java 的安装

下载JDK,然后运行安装程序。 选择安装的位置,这里需要注意一下,不要选择带有特殊字符(比如:空格之类的)和带有中文的路径,以免反生不明所以的错误。 安装位置这里需要记一下,等下用来配置环境变量,如果你和图上选择的路径的不一样,在设置环境变量时请跟着修改。

由于 JDK 中包含了 JRE 所以这里直接取消,不在进行安装,安装也是可以的。

配置环境变量

接下来进行 Java 的环境变量配置。在计算机中右键->属性

选择高级系统设置

点击环境变量

点击新建

变量名输入(变量名要大写) JAVA_HOME,变量值输入刚才安装的路径,如果改过安装路径,请选择正确的安装路径。我这里是 C:\Java ,输入完后点击确定保存。

和上一步一样,点击新建。设置变量名为 Path ,变量值为 %JAVA_HOME%\bin 。 其中 %% 的意思是引用变量的值,所以这里 Path 其实是 C:\Java\bin

Android 环境搭建

点击下载AndroidStudio,下载完成后运行安装程序。 点击下一步,出现选择安装路径。和安装 Java 一样选择一个不带有特殊字符和中文的路径。

选择自定义安装

选择 SDK 安装路径,也是需要记住安装路径,用于配置环境变量。

配置环境变量

配置 ANDROID_HOME ,和 Java 配置环境变量在同一个地方。不过这次的变量名是 ANDROID_HOME ,变量值是刚刚 SDK 的安装路径。 右键计算机->属性->高级系统设置->环境变量->新建

除了配置 ANDROID_HOME 还需要把 adb 加入 Path 中,这样才能调试设备。

在环境变量中选择 Path 点击编辑,加入 ;%ANDROID_HOME%\platform-tools ,注意前面有一个 ; 环境变量有多个可以使用 ; 分隔。最后 Path%JAVA_HOME%\bin;%ANDROID_HOME%\platform-tools

Nodejs 的安装

点击Node下载 Node.js,下载完成后运行安装,一直点击下一步。没了,就这么简单。 Nodejs 带有 npm 包管理工具,由于镜像在国外,访问很慢,这里使用淘宝镜像加速。

1
npm config set registry http://registry.cnpmjs.org

appium-doctor 的安装

appium-doctor 是一个用来检查 appium 环境是否安装并配置好的工具,让我们来检测一下上面的步骤都成功了没有。 点击屏幕左下角,在搜索框中输入 cmd 回车

在打开的窗口中输入 npm install -g appium-doctor

安装好之后,输入 appium-doctor 来查看环境是否配置成功。

appium 安装

点击Appium下载,点击安装。没了。 运行起来看看。

一个小例子

经过上面的环境搭建,终于可以测试了,下面使用 Python 来简单的测试计算器的加法。使用时请保证设备安装好了驱动,并能正确连接到电脑。 在用 Python 测试时需要用到 Appium-Python-Client ,先来安装一下。 打开终端 输入 pip install Appium-Python-Client

  • platformName 表示要进行测试的平台,分为 AndroidiOS
  • deviceName 设备名称,在终端中使用 adb devices 来查看
  • appPackage 测试应用的包名
  • appActivity 测试应用的界面
  • noReset 测试不清除应用数据
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import unittest
from time import sleep
from appium import webdriver

class Calc(unittest.TestCase):
    def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['deviceName'] = 'Android Emulator'
        desired_caps['appPackage'] = 'com.android.calculator2'
        desired_caps['appActivity'] = '.Calculator'
        desired_caps['noReset'] = True
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)


    def test_calc(self):
        self.driver.find_element_by_id('com.android.calculator2:id/digit_1').click()
        sleep(1)
        self.driver.find_element_by_id('com.android.calculator2:id/op_add').click()
        sleep(1)
        self.driver.find_element_by_id('com.android.calculator2:id/digit_2').click()
        sleep(1)
        self.driver.find_element_by_id('com.android.calculator2:id/eq').click()
        sleep(1)


    def tearDown(self):
        self.driver.quit()


if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(Calc)
    unittest.TextTestRunner(verbosity=2).run(suite)

看看效果,还不错

踩过的坑

数据被清除

在使用 Appium 进行测试时,每次都会把要进行测试的软件对应的数据给清除掉。可怜我第一次使用微信进行测试,虽然测通了,但是我重新打开微信的时候,什么都没了。哭晕在厕所。 解决这个问题很简单,只要配置一个参数即可

1
desired_caps['noReset'] = True

测试函数要以 test 开头

跟着官方的例子自己写了一个试试,但是发现还是太年轻,调了好久都没用,最后想起了 Go 语言里测试函数是要以 test 开头的,于是试了一下就通了。

下载链接