windows下搭建appium+android测试环境(node.js样例)

时间:2021-11-25 20:12:53

安装 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 文件,写入:

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

然后使用npm命令安装 Appium

1
npm install -g appium

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

1
npm install -g appium-doctor

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

windows下搭建appium+android测试环境(node.js样例)

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

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

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

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

windows下搭建appium+android测试环境(node.js样例)

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

windows下搭建appium+android测试环境(node.js样例)

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

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


必要的环境变量设置

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

windows下搭建appium+android测试环境(node.js样例)

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

环境变量
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进行检查。不出意外,你应该能通过检查。

Node.js测试用例

"use strict";

require("./helpers/setup");

var wd = require("wd"),
_ = require('underscore'),
serverConfigs = require('./helpers/appium-servers');

describe("android simple", function () {
this.timeout(300000);
var driver;
var allPassed = true;

before(function () {
var serverConfig = process.env.npm_package_config_sauce ?
serverConfigs.sauce : serverConfigs.local;
driver = wd.promiseChainRemote(serverConfig);
require("./helpers/logging").configure(driver);

var desired = process.env.npm_package_config_sauce ?
_.clone(require("./helpers/caps").android) :
_.clone(require("./helpers/caps").android);
// desired.app = require("./helpers/apps").taobaoApp;
if (process.env.npm_package_config_sauce) {
desired.name = 'android - simple';
desired.tags = ['sample'];
}
return driver
.init(desired)
.setImplicitWaitTimeout(3000);
});

after(function () {
return driver
.quit()
.finally(function () {
if (process.env.npm_package_config_sauce) {
return driver.sauceJobStatus(allPassed);
}
});
});

afterEach(function () {
allPassed = allPassed && this.currentTest.state === 'passed';
});

it("should find an element", function () {
return driver
.elementByAccessibilityId('Graphics')
.click()
.elementByAccessibilityId('Arcs')
.should.eventually.exist
.back()
.elementByName('App')
.should.eventually.exist
.elementsByAndroidUIAutomator('new UiSelector().clickable(true)')
.should.eventually.have.length(12)
.elementsByAndroidUIAutomator('new UiSelector().enabled(true)')
.should.eventually.have.length.above(20)
.elementByXPath('//android.widget.TextView[@text=\'API Demos\']')
.should.exists;
});
});
caps.js

exports.android = {
// browserName: '',
'appium-version': '1.7.2',
platformName: 'Android',
platformVersion: '5.1',
deviceName: 'emulator-5554',
appActivity:'com.taobao.tao.homepage.MainActivity3',
appPackage:'com.taobao.taobao'
// app: undefined // will be set later
};


部分转载至:https://betacat.online/posts/2017-05-03/setup-appium-automation-test-environment/