当前位置: 首页 > news >正文

使用 node(wd)编写 Appium 测试用例--测试2

wd 是Appium服务器的JavaScript语言的客户端程序库,支持使用node编写Appium测试用例

在编写测试用例前,确保电脑已搭建好Appium环境,若未搭建,参考:Mac系统下appium环境搭建

搭建测试项目

新建项目

$ mkdir appium-wd-example
$ cd appium-wd-example
$ npm init复制代码

安装 appium 客户端程序库

$ npm install wd # wd是Appium服务器的JavaScript语言的客户端程序库复制代码

安装 mocha 测试框架及其他依赖

$ npm install mocha # 测试框架
$ npm install chai
$ npm install chai-as-promised
$ npm install colors复制代码

编写测试用例

测试功能

进入微信首页(未登录状态),检查是否存在登录按钮

准备

Android机(安装了微信)、数据线(将手机通过数据线与电脑连接)

获取设备信息

deviceName
$ adb devices
# List of devices attached
# U2TDU15904014013	device复制代码
appPackage & appActivity

在测试机上,打开微信,执行以下脚本:

$ adb shell dumpsys window windows | grep mFocusedApp
# mFocusedApp=AppWindowToken{1c6b43b3 token=Token{49ad22 ActivityRecord{35092aed u0 com.tencent.mm/.ui.LauncherUI t224}}}复制代码

从输出可以获取到 appPackage: "com.tencent.mm"; appActivity: ".ui.LauncherUI"

配置:Appium Desired Capabilities

写代码

sample.js

require("../helpers/setup");

const wd = require("wd");

const serverConfig = {
    host: 'localhost',
    port: 4723
};

describe("sample test", function () {
    this.timeout(300000);

    let driver;
    let allPassed = true;

    before(function () {

        driver = wd.promiseChainRemote(serverConfig);
        require("../helpers/logging").configure(driver);

        var desired = {
            platformName: 'Android',
            deviceName: 'U2TDU15904014013',
            appPackage: 'com.tencent.mm',
            appActivity: '.ui.LauncherUI',
            fullReset: false,
            fastReset: false,
            noReset: true,
        };
        return driver
            .init(desired)
            .setImplicitWaitTimeout(8000);
    });

    after(function () {
        return driver
            .quit();
    });

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

    it("进入微信首页", function () {
        return driver
            .elementByXPath("//*[@text='登录']")
            .should.eventually.exist;
    });
});复制代码

setup.js

const wd = require("wd");

require('colors');
const chai = require("chai");
const chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
const should = chai.should();
chaiAsPromised.transferPromiseness = wd.transferPromiseness;

exports.should = should;复制代码

logging.js

exports.configure = function (driver) {
    driver.on('status', function (info) {
        console.log(info.cyan);
    });
    driver.on('command', function (meth, path, data) {
        console.log(' > ' + meth.yellow, path.grey, data || '');
    });
    driver.on('http', function (meth, path, data) {
        console.log(' > ' + meth.magenta, path, (data || '').grey);
    });
};复制代码

执行测试用例

package.json中添加以下脚本:

{
    ...
    "scripts": {
        "sample": "mocha ./test/sample.js"
    }
    ...
}复制代码

执行测试用例:

$ appium # 启动Appium服务
$ npm run sample # 运行测试用例复制代码

执行结果如下:

以上就是使用 wd 编写简单 Appium 测试用例的过程了~

使用 wd 编写复杂测试用例,参考:使用 Appium 进行微信小程序自动化测试

完整代码:github.com/HuJiaoHJ/ap…


原文: https://github.com/HuJiaoHJ/blog/issues/3


转载于:https://juejin.im/post/5b2f2efd51882574a11f6a1d

相关文章:

  • [BZOJ2850]巧克力王国
  • 刚刚!“跨境汇款”被区块链重新定义,马云:源于多年前一个承诺
  • 大数据理论体系总结--数据仓库管理与全链路数据体系
  • 局域网大型文件分发的可能解决方案
  • 搭建视频监控平台《监视我的团宝宝》
  • BCH踏着优化升级路线,在数字货币界声名鹊起
  • Rust 1.27支持SIMD
  • 使用机器学习预测电子竞技游戏《守望先锋》的胜负
  • 技术团队管理笔记(二)-带人
  • 使用DeepLearning4j训练和保存模型
  • 爬取斗鱼图片
  • linux学习,网络故障排查
  • 微服务概念
  • 开发者论坛一周精粹(第四十八期) ICP经营许可证办理流程
  • 如何禁止JavaScript对象重写?
  • 分享一款快速APP功能测试工具
  • AngularJS指令开发(1)——参数详解
  • CSS实用技巧
  • C学习-枚举(九)
  • gf框架之分页模块(五) - 自定义分页
  • IOS评论框不贴底(ios12新bug)
  • java2019面试题北京
  • jdbc就是这么简单
  • Nodejs和JavaWeb协助开发
  • SegmentFault 2015 Top Rank
  • unity如何实现一个固定宽度的orthagraphic相机
  • WePY 在小程序性能调优上做出的探究
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 关于springcloud Gateway中的限流
  • 简单数学运算程序(不定期更新)
  • 微信小程序--------语音识别(前端自己也能玩)
  • 系统认识JavaScript正则表达式
  • C# - 为值类型重定义相等性
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 阿里云重庆大学大数据训练营落地分享
  • 容器镜像
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​一些不规范的GTID使用场景
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #宝哥教你#查看jquery绑定的事件函数
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (算法)N皇后问题
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)Linux+Windows下安装ffmpeg
  • (转)LINQ之路
  • (转)Sublime Text3配置Lua运行环境
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .Family_物联网
  • .Net - 类的介绍