Android 7.0系统的手机无法执行appium脚本的问题:"PS 'uiautomator'"

博客主要围绕解决Android 7.0系统手机无法执行appium脚本的问题展开。指出uiautomator1.0可能不支持7.0,可换用uiautomator2.0或改脚本。详细说明了修改appium安装目录下adb.js文件内容的解决办法,包括替换指令和增加shell_grep函数。

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

报错:

解决:

解决办法

uiautomator1.0应该是不支持7.0,不升版本就换用uiautomator2.0吧,或者用下面的改脚本的方法使用。

解决Android 7.0系统的手机无法执行appium脚本的问题,改问题的具体解决方法如下:

  1. 找到appium的安装目录下的adb.js文件,windows版本的目录如下:Appium\node_modules\appium\node_modules\appium-adb\lib
    2、 打开adb.js,手动修改该文件下的内容,此方法我已经试验成功。

adb.js 中1035 行this.shell("ps '" + name + "'", function (err, stdout) {
对应执行的指令是ps 'uiautomator', Android7不支持这个指令格式,所以执行结果是bad pid 'uiautomator'
目前Appium未对此进行处理,所以需要修改此指令的执行方式
即将
this.shell("ps '" + name + "'", function (err, stdout) {
if (err) return cb(err);
替换成
this.shell_grep("ps", name, function (err, stdout) {

if (err) {

logger.debug("No matching processes found");
return cb(null, []);

}

并增加上面用到的shell_grep函数:
ADB.prototype.shell_grep = function (cmd, grep, cb) {
if (cmd.indexOf('"') === -1) {
cmd = '"' + cmd + '"';
}
var execCmd = 'shell ' + cmd + '| grep ' + grep;
this.exec(execCmd, cb);

};

 

如图:

 

### Appium 2.0 使用指南和特性介绍 #### 特性概述 Appium 是一款开源自动化测试工具,用于原生、移动Web以及混合应用的自动化测试。随着版本迭代至2.0,该平台引入了一系列新特性和改进措施来增强用户体验和支持更多类型的设备与操作系统组合[^1]。 #### 安装配置流程 为了启动并运行基于Appium 2.0框架下的自动化脚本,需先完成必要的安装准备工作。这通常涉及下载最新版软件包、设置环境变量路径以及确认依赖项已正确加载。对于初次使用者而言,官方文档提供了详尽的操作指引以帮助顺利完成初始化过程。 #### 支持多平台跨端开发 得益于其灵活的设计理念和技术架构的支持,新版Appium不仅限于单一品牌或型号手机上的应用程序测试工作;相反地,它能够兼容市面上绝大多数主流厂商生产的智能终端产品——无论是iOS还是Android系统均能被纳入统一管理之下进行高效的批量处理作业。 #### 强化后的UI元素识别能力 针对以往版本中存在的某些局限之处,在此更新中特别加强了对复杂页面布局下控件定位精度方面的表现力。借助先进的图像匹配算法配合机器学习模型训练成果的应用实践案例分享,使得即使面对高度动态变化的内容展示形式也依然可以保持较高的稳定性和准确性水平。 #### 性能优化与资源消耗控制 考虑到实际应用场景中的效率考量因素,研发团队还致力于降低整体执行时间的同时减少不必要的内存占用情况发生概率。具体做法包括但不限于采用异步I/O机制代替同步调用来提高响应速度;精简内部逻辑结构设计从而达到简化计算量的目的等等举措共同作用下实现了显著的效果提升。 ```python from appium import webdriver desired_caps = { 'platformName': 'Android', 'automationName': 'UiAutomator2', 'deviceName': 'emulator-5554', 'appPackage': 'com.example.app', 'appActivity': '.MainActivity' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) try: element = driver.find_element_by_accessibility_id("someAccessibilityID") finally: driver.quit() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值