Appium:uiautomatorviewer出现Unable to connect to adb. Check if adb is installed correctly解决办法

本文详细介绍了如何解决UIAutomatorViewer启动时遇到的问题,包括修改uiautomatorviewer.bat文件中的Java调用参数,以及调整ADB版本一致性,确保与Android SDK中platform-tools目录下的ADB版本相匹配。

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

点击“Device Screenshot”报错
解决办法:

1、找到uiautomatorviewer.bat文件目录,使用文本打开

2、修改最后一行(修改前:call “%java_exe%” “-Djava.ext.dirs=%javaextdirs%” “-Dcom.android.uiautomator.bindir=%prog_dir%” -jar %jarpath% %*)

3、修改后:call “%java_exe%” “-Djava.ext.dirs=%javaextdirs%” “-Dcom.android.uiautomator.bindir=替换成Android SDK 目录tools文件路径” -jar %jarpath% %*

4、重启uiautomatorviewer.bat

若仍报相同错误(原因:可能本地安装adb版本与“./Android sdk/platform-tools”目录内adb版本不一致)

解决方法:将本地的adb版本替换platform-tools内的adb(或platform-tools目录内的adb 版本替换本地的adb 版本)

已替换platform-tools内adb文件
重启uiautomatorviewer.bat,亲测有效

恢复正常
adb 1.0.32版本下载链接: https://pan.baidu.com/s/1KfahTpyG9FAEjT4K2SGCpA 提取码: 85vc 复制这段内容后打开百度网盘手机App,操作更方便哦

### Appium 中集成和使用 UI Automator Viewer 进行 Android 应用的 UI 元素定位与交互 #### 使用 UI Automator Viewer 抓取页面元素 为了更好地理解和操作Android应用的UI组件,可以先利用`UI Automator Viewer`来捕获并分析目标应用的界面。该工具允许查看正在运行的应用程序界面上各个控件的具体属性及其层次关系[^1]。 ```bash # 打开命令提示符或终端窗口,并输入以下指令启动工具 uiautomatorviewer ``` 当工具成功加载后,按照如下方式获取所需信息: - 将设备通过USB线缆连接至计算机; - 启动待测应用程序; - 在`UI Automator Viewer`内单击左上角按钮拍摄屏幕快照,此时会显示所选画面内的所有可视化的视图节点以及对应的资源ID、类名等重要参数[^4]; 这些数据对于后续构建稳定可靠的定位策略至关重要。 #### 配置 Appium 测试环境 在准备就绪之后,接下来要设置好基于Python语言开发的Appium自动化测试框架。这通常涉及到安装特定版本的Appium Server和服务端驱动库——即`Appium-Client`包[^2]。 ```python pip install Appium-Python-Client ``` 确保已正确设置了ANDROID_HOME环境变量指向本地解压后的SDK根目录位置,以便于顺利调用ADB及其他关联命令完成必要的初始化工作。 #### 编写 Python 脚本实现基本交互逻辑 最后一步就是创建具体的测试案例文件了。下面给出一段简单的例子用来示范怎样借助前面收集的信息找到指定对象进而触发相应动作。 ```python from appium import webdriver desired_caps = { 'platformName': 'Android', 'deviceName': '<Your Device Name>', 'appPackage': '<Target Package Name>', 'appActivity': '.<Launcher Activity>' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) try: element = driver.find_element_by_accessibility_id("<Accessibility ID>") # 或者根据其他条件查找,比如className, resourceId 等 if element.is_displayed(): element.click() finally: driver.quit() ``` 这段代码展示了如何建立远程Webdriver实例并与真实物理机器建立起通信链路,随后依据之前记录下来的特征描述去检索匹配项并对其实施点击事件处理。当然实际项目里可能还会涉及更多复杂的场景设计,但这已经足以作为入门指南了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值