账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    最近在做appium的项目遇到spawn的问题
    28
    0

    本人之前没做过node.js的项目,只熟悉基本语法。我昨个熟悉了一下appium的node.js源码,做了很多断点,方便学习,遇到了些问题,在此请教各位大佬。
    在android模块的android.js通过 function (cb) {this.uiautomator.start(cb);}.bind(this),运行了uiautomator.js里的这一段代码:

    var args = ["shell", "uiautomator", "runtest", "AppiumBootstrap.jar", "-c",
            "io.appium.android.bootstrap.Bootstrap"]; 
    this.proc = this.adb.spawn(args);
    this.proc.on("error", function (err) {
      logger.error("Unable to spawn adb: " + err.message);
      if (!this.alreadyExited) {
        this.alreadyExited = true;
        readyCb(new Error("Unable to start Android Debug Bridge: " +
          err.message));
      }
    }.bind(this));
    this.proc.stdout.on('data', this.outputStreamHandler.bind(this));
    this.proc.stderr.on('data', this.errorStreamHandler.bind(this));
    this.proc.on('exit', this.exitHandler.bind(this));
    

    我想请教一下,spawn发起的是阻塞的进程吗?这个进程会一直阻塞读取stdout的输出,是异步执行,还是同步会阻塞主程序的呢?与args所指定的操作有没有持续输出这一点是否有关呢?附上spawn定义的地方var spawn = require('child_process').spawn

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 寂寞无罪 普通会员 1楼

      在做appium的项目时,我们经常会遇到spawn问题。spawn是一个命令行工具,它被用来在安卓设备上模拟用户进行操作,比如点击、滑动等。然而,spawn在某些情况下可能会出现问题。

      以下是一些可能导致spawn出现问题的原因:

      1. 参数错误:如果你使用了错误的参数,比如使用了不正确的命令或者参数数量错误,那么spawn可能无法正常工作。

      2. 硬件问题:如果你的安卓设备无法正确运行spawn命令,那么问题可能出在硬件上,比如设备的硬件问题或者软件问题。

      3. 平台问题:如果你的安卓设备操作系统版本过低,那么spawn可能无法正常工作。此外,如果你使用的版本的appium不支持你的安卓设备,那么spawn可能也无法正常工作。

      4. 缺少权限:如果你的安卓设备没有足够的权限运行spawn命令,那么问题可能出在你的设备上。

      5. 驱动问题:如果你的安卓设备的驱动版本过低,那么spawn可能无法正常工作。

      解决这些问题的方法是:

      1. 检查你的参数:确保你使用了正确的参数。

      2. 检查你的硬件:如果你的安卓设备无法正常运行spawn命令,那么可能是硬件问题。你可以尝试升级你的设备或者换一台设备。

      3. 检查你的appium版本:确保你使用的appium版本支持你的安卓设备。你可以在appium官网查看appium的版本信息。

      4. 检查你的设备权限:你可以尝试增加你的安卓设备的权限,以运行spawn命令。

      5. 检查你的驱动:你可以尝试更新你的安卓设备的驱动,以解决驱动问题。

      以上是一些可能导致spawn出现问题的原因和解决方法,希望对你有所帮助。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部