IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> appium+nodejs自动化测试安卓手机 -> 正文阅读

[开发测试]appium+nodejs自动化测试安卓手机

? ?本文主要介绍node+appium+android实现自动化测试。因为大部分网上搜索到的资料都是通过python+appium进行测试的,所以自己总结一下node的

目录

一、基础知识

1、appium环境相关

2、appium启动

3、adb server

4、adb命令

?二、相关文档集合

1、appium的能力集合

2、wb包的方法集合(如何操作手机的方法集合)

3、appium的原理介绍

三、简单的例子

?四、常见错误


一、基础知识

1、appium环境相关

1)、node (appium's runtime environment)

2)、appium (` npm install -g appium`), 本地调试也可以下载appium桌面版本

3)、android sdk ("adb" and "ANDROID_HOME" , "ANDROID_SDK_ROOT" environment variable are needed)

4)、jdk ("JAVA_HOME" env should be set)

以上环境是运行appium必须要配置的,因为appium是一个node服务,所以本地必须有node.js的环境。当然我们可以直接使用appium-doctor来检查自己的appium环境是否配置好。

2、appium启动

? ?appium可以通过桌面版本启动,也可以直接通过appium命令启动。当然如果用命令启动的话上面的步骤二 是一定要安装的。

appium的默认端口是4723。如果启动多测试多台手机建议启动过个appium服务。

命令启动:

appium --address 0.0.0.0 --port 4723 --bootstrap-port 4726

appium -a 127.0.0.1 -p 4727 -bp 4728

注意:??-bp 是连接Android设备bootstrap的端口号,默认是4724(也可写成--bootstrap-port)需要注意的是如果启动多个appium服务的话,-bp是必须指定的。

3、adb server

adb默认server的端口是5037,如果我们想一个adb server操作一台手机的话,可以通过下面的命令再启动adb server

adb -P 5038 start-server

adb -P 5038 kill-server

4、adb命令

? 因为我们的大部分的服务都是部署在linux系统上的,当然连接上手机后我们也可以直接使用adb命令操作手机。

adb -P 5037 -s 10.211.217.7:15081 shell am force-stop 包名

:-P 指的是adb server的端口号 -s 指的是通过adb devices查看到的要操作的设备名字。

?二、相关文档集合

1、appium的能力集合

appium 能力集 : (这个能力集合里面的参数,在我们启动app的时候会用到)

https://appium.io/docs/en/writing-running-appium/caps/

2、wb包的方法集合(如何操作手机的方法集合)

wb 包的方法合集:

https://github.com/admc/wd/blob/master/lib/commands.js#L1780

3、appium的原理介绍

? ? 下面的文章会介绍session相关的内容,我们的每次appium操作都是有对应的session的,session过期后对应启动的app也会退出的。

https://www.jianshu.com/p/30b3b2d6b901

三、简单的例子

const wd = require("wd");

const serverConfig = {

? host: "localhost",
? port: 4723,

? };



//获取到wd的driver

const driver = wd.promiseChainRemote(serverConfig);


let desired: any = {

? platformName: "Android",
 deviceName: "设备的名字,adb devices",
 //platformVersion: '2.0.0',
 appPackage: config.appPackage,
 noReset: true,
 resetKeyboard: true,
 appActivity: config.appActivity,
 newCommandTimeout: 120,
 //adbPort, 如果使用的adb的server不是5037端口就需要指定了
? udid: "设备的名字,adb devices" //操作多台手机使用, 这个必须有的

? };



//获取元素并点击

let access: any = await catchEX(driver.elementByAndroidUIAutomator(`text("同意")`));


? if (access && JSON.stringify(access) != "{}") {

? await access.click();

? await sleep(3000);


? }


driver.quit();

注意:我们通过wb获取到的driver,在查找界面元素的时候,如果没有查找的话,会报错的,我们需要catch住这个promise的报错。

?四、常见错误

1、Android bootstrap socket crashed: Error: This socket has been ended by the other party

这个可能因为我们操作了多台手机,而启用了一个appium服务。导致一些连接被占用或出现问题。这时候建议使用一个手机使用一个appium服务

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:41:40  更:2021-08-17 15:43:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:17:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码