使用Appium Inspector或uiautomatorviewer中,元素可以点击,但是执行脚本就不能点击,相同代码,其他手机可以
针对“相同代码在其他手机正常,仅在vivo/iQOO上无法点击”的情况,这通常是vivo/iQOO系统特有的权限或安全限制导致的。问题核心在于,**Appium Inspector/uiautomatorviewer能识别元素,但执行脚本时Appium服务没有获得模拟点击的足够权限。
第一步:检查设备开发者选项
进入“开发者选项”,找到并开启“USB调试(安全设置)”
第二步:授予Appium关键权限
进入应用管理,找到Appium服务应用(如io.appium.settings)
授予“悬浮窗”和“后台弹出界面”权限
针对性解决方案(针对vivo/iQOO)
请按以下顺序操作,核心是清理环境和稳定连接:
第一步:立即清理与重启(最可能解决问题)
-
结束所有相关进程:
-
在电脑终端执行:
adb kill-server adb start-server
-
在vivo/iQOO手机上,进入设置 > 应用与权限 > 应用管理,找到
io.appium.uiautomator2.server和io.appium.uiautomator2.server.test,强制停止并清除其数据。
-
-
重启Appium服务:完全停止你的Groovy脚本启动的Appium Server,并重启一个新的会话。确保启动时只存在一个测试会话。
第二步:优化vivo/iQOO设备设置
-
关闭省电模式:进入 设置 > 电池,关闭任何省电模式或超级省电模式,并为你的测试应用(小牛)和Appium相关应用(如
io.appium.settings)设置“后台高耗电”或“允许后台活动”。(本次是修改这个选项好的) -
禁用内存扩展(如有):部分vivo/iQOO机型有“内存扩展”或“虚拟内存”功能,尝试在设置 > 运存与存储空间中关闭它,这可能引起I/O延迟。
-
确保USB连接稳定:换用高质量的USB数据线,并连接到电脑后置USB端口。在开发者选项中,关闭“USB调试(安全设置)”后再重新开启。
第三步:调整Appium启动参数(在代码中)
在你的启动命令中增加以下参数,以优化UIAutomator2的稳定性:
def command = [
"appium",
"--address", address,
"--port", port,
"--base-path", basePath,
"--allow-cors",
"--session-override",
"--relaxed-security",
"--log-level", "debug", // 使用debug级别以便查看更多细节
"--use-drivers", "uiautomator2",
// 增加以下参数
"--default-capabilities", '{"uiautomator2ServerInstallTimeout": 120000, "adbExecTimeout": 120000}'
]
同时,在你的客户端(测试脚本)的Desired Capabilities中,添加:
"uiautomator2ServerLaunchTimeout": 120000,
"androidInstallTimeout": 120000,
"ignoreUnimportantViews": true // 可选,加速UI树获取
第四步:执行快速验证
完成以上步骤后,执行一个最简单的测试:仅用Appium Inspector新建一个会话,并尝试定位同一个元素。观察:
-
速度是否正常?
-
如果Inspector也慢,问题在设备/服务端;如果Inspector快而脚本慢,问题可能在你的脚本逻辑(如不必要的等待)。
总结与后续步骤
当前问题本质是 “查找元素超时” ,而非“点击无效”。建议你立即从第一步“清理与重启”开始操作,这有很高概率能解决。
如果问题依旧,请提供以下信息以便进一步分析:
-
执行
adb devices命令时,该vivo/iQOO设备的连接状态是否稳定?(有无offline闪烁) -
测试时,手机是否处于亮屏且解锁状态?
-
除了小牛App,测试一个最简单的系统应用(如“计算器”)是否也有相同延迟?

浙公网安备 33010602011771号