使用Appium Inspector或uiautomatorviewer中,元素可以点击,但是执行脚本就不能点击,相同代码,其他手机可以

针对“相同代码在其他手机正常,仅在vivo/iQOO上无法点击”的情况,这通常是vivo/iQOO系统特有的权限或安全限制导致的。问题核心在于,**Appium Inspector/uiautomatorviewer能识别元素,但执行脚本时Appium服务没有获得模拟点击的足够权限。

第一步:检查设备开发者选项
进入“开发者选项”,找到并开启“USB调试(安全设置)”

第二步:授予Appium关键权限

进入应用管理,找到Appium服务应用(如io.appium.settings)
授予“悬浮窗”和“后台弹出界面”权限

针对性解决方案(针对vivo/iQOO)

请按以下顺序操作,核心是清理环境和稳定连接:

第一步:立即清理与重启(最可能解决问题)

  1. 结束所有相关进程:

    • 在电脑终端执行:

      bash
      adb kill-server
      adb start-server
    • 在vivo/iQOO手机上,进入设置 > 应用与权限 > 应用管理,找到 io.appium.uiautomator2.server 和 io.appium.uiautomator2.server.test,强制停止并清除其数据。

  2. 重启Appium服务:完全停止你的Groovy脚本启动的Appium Server,并重启一个新的会话。确保启动时只存在一个测试会话。

第二步:优化vivo/iQOO设备设置

  1. 关闭省电模式:进入 设置 > 电池,关闭任何省电模式或超级省电模式,并为你的测试应用(小牛)和Appium相关应用(如 io.appium.settings)设置“后台高耗电”或“允许后台活动”。(本次是修改这个选项好的)

  2. 禁用内存扩展(如有):部分vivo/iQOO机型有“内存扩展”或“虚拟内存”功能,尝试在设置 > 运存与存储空间中关闭它,这可能引起I/O延迟。

  3. 确保USB连接稳定:换用高质量的USB数据线,并连接到电脑后置USB端口。在开发者选项中,关闭“USB调试(安全设置)”后再重新开启。

第三步:调整Appium启动参数(在代码中)

在你的启动命令中增加以下参数,以优化UIAutomator2的稳定性:

groovy
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中,添加:

json
"uiautomator2ServerLaunchTimeout": 120000,
"androidInstallTimeout": 120000,
"ignoreUnimportantViews": true  // 可选,加速UI树获取

第四步:执行快速验证

完成以上步骤后,执行一个最简单的测试:仅用Appium Inspector新建一个会话,并尝试定位同一个元素。观察:

  • 速度是否正常?

  • 如果Inspector也慢,问题在设备/服务端;如果Inspector快而脚本慢,问题可能在你的脚本逻辑(如不必要的等待)。

总结与后续步骤

当前问题本质是 “查找元素超时” ,而非“点击无效”。建议你立即从第一步“清理与重启”开始操作,这有很高概率能解决。

如果问题依旧,请提供以下信息以便进一步分析:

  1. 执行adb devices命令时,该vivo/iQOO设备的连接状态是否稳定?(有无offline闪烁)

  2. 测试时,手机是否处于亮屏且解锁状态?

  3. 除了小牛App,测试一个最简单的系统应用(如“计算器”)是否也有相同延迟?

posted @ 2026-01-05 15:32  昕夕caas  阅读(1)  评论(0)    收藏  举报