初探自动化测试框架(python)第九章——appnium环境搭建

本文详细介绍了如何搭建Appium自动化测试环境,包括JDK、SDK、Node.js、Appium等软件的安装与配置,以及如何连接调试设备,是进行移动应用自动化测试的必备指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备JDK

python selenium 框架探索时介绍过,这里不做详细介绍

https://blog.youkuaiyun.com/weixin_44394054/article/details/103401889

准备SDK

链接:
链接:https://pan.baidu.com/s/1m-iS6Ih1gr-4P5yBckGg9A
提取码:2tw2
或者:http://tools.android-studio.org/index.php/sdk/

  • 安装安卓版本
    打开SDK Manager.exe
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 配置环境变量

    ANDROID_HOME:G:\android-sdk-windows(安装位置)
    在这里插入图片描述

    在path路径中添加环境变量

    %ANDROID_HOME%\tools
    %ANDROID_HOME%\platform-tools
    %ANDROID_HOME%\build-tools\27.0.3

    在这里插入图片描述

  • 验证是否配置SDK成功,在命令窗口中输入

    adb –-version

准备NODE.JS

推荐下载11.15.0版本。与appnium适配。https://npm.taobao.org/mirrors/node/v0.11.15/x64/

下载地址:https://nodejs.org/en/

  • 安装一路下一步。将安装路径配置到环境变量中
    在这里插入图片描述
  • 在命令窗口检查配置成功与否:node -v

准备APPNIUM

https://bitbucket.org/appium/appium.app/downloads/
链接:https://pan.baidu.com/s/12V1FqLweflnGBbx0GPI_BA 提取码:zp3e
命令窗口安装:
npm install –g appium
npm install –g appium-doctor

  • 安装一路下一步。将安装路径下的node_modules.bin配置到环境变量中
    在这里插入图片描述
  • 在命令窗口检查配置成功与否:appium-doctor

准备安装appium-python-client

pip3 install Appium-Python-Client

调试设备

连接设备

adb devices

在这里插入图片描述
出现这种情况需要打开设备的USB调试模式,并授权。

在这里插入图片描述

连接端口

  • 查看手机IP
    设置->系统设置->关于手机->状态信息->IP地址

    或者通过 adb shell netcfg

    在这里插入图片描述
    -连接设备端口

    adb connect ip:5555
    例如: adb connect 185.20.1.236:5555

    出现无法连接情况
    在这里插入图片描述
    1.ping IP 看是否能通
    2.用adb tcpip模式重启adb : adb tcpip 5555
    3.重新连接:adb connect ip:5555

启动appnium!

在这里插入图片描述
在这里插入图片描述

使用appium在android真机上测试程序时报错

command failed shell "ps ‘uiautomator’"的解决方式:

https://blog.youkuaiyun.com/pjl6523853/article/details/72886048

  • 找到appium的安装目录下的adb.js文件
    目录为:Appium\node_modules\appium\node_modules\appium-adb\lib
  • 打开adb.js,找到如下代码:
ADB.prototype.shell = function (cmd, cb) {
 		  if (cmd.indexOf('"') === -1) {
		    cmd = '"' + cmd + '"';
		  }   var execCmd = 'shell ' + cmd;   this.exec(execCmd, cb); }; 
  • 在这段代码下面加入这段代码:
  ADB.prototype.shell_grep = function (cmd, grep, cb) {  
 if (cmd.indexOf('"') === -1) {
 cmd = '"' + cmd + '"';   }   var execCmd = 'shell ' + cmd + '| grep ' + grep;   this.exec(execCmd, cb);
  • 再找到如下代码:
 ADB.prototype.getPIDsByName = function (name, cb) {   logger.debug("Getting all processes with '" + name + "'");   this.shell("ps '" + name + "'", function (err, stdout) {
    if (err) return cb(err);
    stdout = stdout.trim();
    var procs = [];
    var outlines = stdout.split("\n");
    outlines.shift();
    _.each(outlines, function (outline) {
      if (outline.indexOf(name) !== -1) {
        procs.push(outline);
      }
    });
    if (procs.length < 1) {
      logger.debug("No matching processes found");
      return cb(null, []);
    }
    var pids = [];
    _.each(procs, function (proc) {
      var match = /[^\t ]+[\t ]+([0-9]+)/.exec(proc);
      if (match) {
        pids.push(parseInt(match[1], 10));
      }
    });
    if (pids.length !== procs.length) {
      var msg = "Could not extract PIDs from ps output. PIDS: " +
                JSON.stringify(pids) + ", Procs: " + JSON.stringify(procs);
      return cb(new Error(msg));
    }
    cb(null, pids);   }); }; 
  • 把这段代码注释掉,用如下代码代替:
ADB.prototype.getPIDsByName = function (name, cb) {   logger.debug("Getting all processes with '" + name + "'");   this.shell_grep("ps", name, function (err, stdout) {
if (err) {
  logger.debug("No matching processes found");
  return cb(null, []);
}
var pids = [];
_.each(procs, function (proc) {
var match = /[^\t ]+[\t ]+([0-9]+)/.exec(proc);
if (match) {
pids.push(parseInt(match[1], 10));
}
});
if (pids.length !== procs.length) {
  var msg = "Could not extract PIDs from ps output. PIDS: " +
  JSON.stringify(pids) + ", Procs: " + JSON.stringify(procs);
  return cb(new Error(msg));
}
cb(null, pids);   }); };
  • 重启appium
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值