zoukankan      html  css  js  c++  java
  • Windows 下搭建 Appium + Android+python 自动化测试环境

    前言

    本来并不打算写这么一篇文章,但是实践下来发现网上的各种教程里大致有两个问题。一是文章有些跟不上时代,目前android开发和测试的技术更新都比较快,内容有些过期。二是细节部分不是太完整,拼拼凑凑也能完成,但对新手来说就比较痛苦。那么,我也来试着总结一下自己踩过的坑。

    备注:Android自动化测试环境和开发环境并不完全相同,测试环境可以很简单粗暴,很多工具可以不用安装,比如JDK,SDK Tools,测试脚本用C#,Python都可以完成;但是开发环境一般都是需要JDK和不少编译工具。

    实践平台

    Windows 10 Pro 64bit + Python 3.5.3

    安装 JAVA 环境

    如果只是自动化测试用,安装JRE就可以了,如果需要开发或者调试APK,那么请安装JDK。

    1. JRE = JVM + Java SE 标准类库,相当于Java程序最基本的运行环境。

    2. JDK = JRE + 开发工具集,包括javac编译工具等等。

    JRE只有50多MB,JDK则接近200MB,请前往Java官网下载最新版安装,选择64位。

    安装 Android Studio / SDK

    以前的教程里都会让你去装 Android SDK,但现在你从Google或者Bing里很难搜索到 Android SDK的下载链接,因为目前官网推荐的做法有两个:

    1. 安装Android Studio (包含 Android SDK) -- 推荐

    2. 仅安装Android SDK 命令行工具

    新版本的Android SDK和以前也不太一样,以前我们有一个 SDK Manager.exe 的工具用于更新和下载各版本的API,还有一个 AVD Manager.exe 的工具可以模拟各种型号的安卓设备。最新的 SDK 工具把UI 界面基本都去掉了,只留下命令行工具,具体的使用可以参阅官方文档:

    那么多一事不如少一事,我建议推荐你直接安装Android Studio,这样不仅省事,而且万一你想写个App玩玩,也是极其方便的。

    下载地址:https://developer.android.com...

    安装过程非常简单,双击后一路Next,中间你也可以另外指定SDK的安装目标路径(不建议修改)。安装好之后,直接启动 Android Studio,首先会提示你联网下载一些必要的工具(你需要一个好的网络和梯子)。

    一切就绪后,你可以在启动界面就可以打开 SDK Manager。

    或者新建一个工程,从工程界面打开SDK Manager。

    SDK Manager 打开之后,使用的方法就一目了然了。这就是个让你更新API和各种开发工具的工具。

    如果只是为了自动化测试其实你只要记住SDK安装目录就可以了,不需要安装任何多余的工具。SDK的安装目录在配置环境变量时需要用到。

    如果你的网络不畅通,那么需要先设置代理。接下来才能安装你想要的SDK版本和开发者工具。

    安装 Android 模拟器

    如果你已经安装了Android Studio,模拟器也已经有了,从工程界面找到AVD Manager的按钮,按照下图三个步骤就可以添加并启动一个模拟器。

    每当你安装新版本的模拟器都是需要FQ或者代理的,最开始启动Android Studio时它已经给你下一个最新版的Android,我当前模拟器中的Android版本是7.1.1。

    如果一切顺利,那么当你启动模拟器后,你就可以看到一台虚拟的Android设备了,手动测试基本条件已经达成,自动化测试指日可待。

    多说几句,除了使用 Android SDK 自带的模拟器外,我们还有两个选择,一是使用真机,速度和体验上会更好。另外一个选择就选择别的模拟器产品,比如 [Genymotion](),因为是商业软件,所以对个人用户(免费)会有诸多限制,尽管如此,其成熟度也比Android SDK自带的模拟器高很多。因为这两个方案的具体实现涉及到的内容比较多,故不在本文讨论。

    安装 Appium

    Appium是开源的自动化测试框架,主要用于iOS,Android以及Windows apps等移动平台的自动化测试。官网的介绍说是它实现一套适用于移动端的WebDriver协议,所以使用Appium时用的还是依赖于Selenium,和Web自动化测试的主要区别就在Driver不一样。

    举一个例子,如果我们需要用Google Chrome来跑Selenium的自动化测试,那么首先需要一个ChromeDriver。如果需要跑在IE上,那么需要一个IEDriver。那么现在需要在移动端比如Android里跑Selenium,这时候你需要一个Appium就够了,它担当了Driver的角色。Appium实现了一套标准的WebDriver,只要Appium服务起来之后,你的代码只需要和Appium交互,Appium会去告诉设备该干嘛干嘛。这里提到的设备可以是iOS或者Android,甚至是Windows Phone 和Firefox OS。

    Appium 官网: http://appium.io/

    安装方式一: 使用NodeJS 安装

    首先到[NodeJS官网]()下载安装最新的NodeJS,Windows下属于傻瓜安装。安装好之后你可以配置NodeJS的安装源,在国内一般都用taobao的镜像,速度还不错。

    在个人目录下新建一个 .npmrc 文件,写入:

    registry=https://registry.npm.taobao.org/

    然后使用npm命令安装 Appium

    npm install -g appium

    建议顺便安装一下appium-doctor,通过运行appium-doctor命令可以快速检查appium的环境问题。

    npm install -g appium-doctor

    如果安装成功,那么就可以通过 appium 命令启动appium server。

    关闭命令行或者按 Ctrl - C 就可以停止 Appium Server。

    安装方式二: 使用Appium安装包

    网上很多教程所引导的Appium安装包一般在百度网盘或者bitbucket里,其实这两者都不是最新的。最新版的安装包应该从官网下载,Appium 目前托管在github,正确的下载地址应该为:

    最新版的Appium 桌面安装后启动是这样的。

    功能上和老的版本没太大区别,但是日志和UI显示更加清晰,一旦错误发生让你更容易找到问题所在。

    注意,你可以不安装Appium 桌面版,但是命令行版应该还是需要安装的,因为自动化测试运行时一般都是通过命令启动和关闭Appium,桌面版并不提供命令行功能,只是为了调试方便。

    关于Appium的介绍,这里有一份非常好的文档:http://appium.io/slate/cn/master

    安装 Appium-Client

    本文只讨论Python实现的Appium测试,所以你只需要允许以下命令:

    pip install Appium-Python-Client

    如果需要使用其他编程语言,下表供参考:

    必要的环境变量设置

    如果你已经安装了appium-doctor,那么你只要运行appium-doctor命令就可以知道你还需要设置哪些环境变量,比如:

    不要慌,其实你只需要设置以下环境变量:

    环境变量
    ANDROID_HOME Android SDK 的安装位置
    JAVA_HOME JDK 或者 JRE 的安装位置
    加入 PATH %ANDROID_HOME%tools
    加入 PATH %ANDROID_HOME%platform-tools
    加入 PATH %JAVA_HOME%bin
    加入 PATH %ANDROID_HOME%build-tools??version?? (可选)

    最后一个环境变量是为了更方便地使用aapt这个工具,完成环境变量配置后你可以再次运行appium-doctor进行检查。不出意外,你应该能通过检查。

    完成第一个自动化测试

    终于来到了动真刀真枪的时候了,很多人一开始就放弃了,更多人开始了之后就放弃了,走到这一步真的挺不容易的。

    开始写代码之前有些事情你应该清楚:

    1. 模拟器或者测试机必须是Ready的状态,每次启动模拟器都很费时间,所以建议模拟器不要关闭,通过代码来启动模拟器是一个办法,但是时间成本有点高。

    2. 如果是调试代码阶段,建议保持Appium桌面版长期运行,远程运行时再通过代码自动启动和关闭Appium。

    3. Appium会根据你的测试代码去寻找符合要求的设备,如果你启动了多台虚拟机或者连接了多台实体机,请显式地在代码中指定设备名称或者版本号。

    第一个自动化测试需求很就简单,就是启动内置的拨号软件,搜索 “hello toby”。代码如下:

    from appium import webdriver
    
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '7.1.1'
    desired_caps['deviceName'] = 'Android Emulator'
    desired_caps['appPackage'] = 'com.android.dialer'
    desired_caps['appActivity'] = 'DialtactsActivity'
    
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    driver.find_element_by_id('com.android.dialer:id/search_box_collapsed').click()
    search_box = driver.find_element_by_id('com.android.dialer:id/search_view')
    search_box.click()
    search_box.send_keys('hello toby')

    运行效果:

    恭喜你,你已经开始进入移动端的自动化测试的大门了!

  • 相关阅读:
    cancel-ng-swipe-right-on-child
    css.day.05.eg
    css.day05
    css.day04.eg
    css.day04
    css.day03.eg
    css.day03
    css.day02.eg
    九月十月百度人搜,阿里巴巴,腾讯华为笔试面试八十题(第331-410题)(转)
    阿里巴巴笔试题选解
  • 原文地址:https://www.cnblogs.com/xuegonghou/p/7428415.html
Copyright © 2011-2022 走看看