You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Appium+Android屏幕底部中央悬浮按钮导致无法滚动,求替代解决方案

Appium Android 滚动被底部悬浮按钮阻挡的解决方案

你之前使用的UiScrollable默认以全屏作为滑动区域,底部悬浮按钮覆盖了滑动热区后,会拦截滑动动作或导致滑动距离不足,因此滚动逻辑失效。可选用以下方案解决:

方案1:调整UiScrollable滑动死区,避开悬浮区域

直接在原有UiAutomator代码中添加死区配置,将底部悬浮按钮所占的区域设为滑动不触发区,无需修改原有滚动逻辑:

driver.findElement(MobileBy.AndroidUIAutomator(
    "new UiScrollable(new UiSelector().scrollable(true).instance(0))" +
    // 可根据悬浮按钮高度调整百分比,以下为设置底部15%区域为滑动死区
    ".setSwipeDeadZonePercentage(0.15)" +
    ".scrollIntoView(new UiSelector().textContains(\"5000666\").instance(0))"
));

滚动到列表底部的代码同理添加死区配置即可:

driver.findElement(MobileBy.AndroidUIAutomator(
    "new UiScrollable(new UiSelector().scrollable(true))" +
    ".setSwipeDeadZonePercentage(0.15)" +
    ".scrollToEnd(10)"
));

方案2:自定义坐标滑动,完全避开悬浮区域

如果UiAutomator原生滚动仍然不生效,可以通过TouchAction自定义滑动坐标,滑动的起点避开底部悬浮按钮的高度范围:

import org.openqa.selenium.Dimension;
import io.appium.java_client.TouchAction;
import io.appium.java_client.touch.WaitOptions;
import io.appium.java_client.touch.offset.PointOption;
import java.time.Duration;

// 获取屏幕尺寸
Dimension screenSize = driver.manage().window().getSize();
int width = screenSize.width;
int height = screenSize.height;

// 计算滑动坐标:水平方向取屏幕中线,垂直滑动范围避开底部15%区域
int startX = width / 2;
int startY = (int) (height * 0.7); // 滑动起点从屏幕70%高度的位置开始
int endX = width / 2;
int endY = (int) (height * 0.2); // 滑动终点到屏幕20%高度的位置停止

// 执行滑动
new TouchAction<>(driver)
    .press(PointOption.point(startX, startY))
    .waitAction(WaitOptions.waitOptions(Duration.ofMillis(800)))
    .moveTo(PointOption.point(endX, endY))
    .release()
    .perform();

可将上述滑动逻辑封装为循环,每次滑动后判断目标元素是否存在,直到找到目标元素或滚动到底部为止。

方案3:临时隐藏悬浮按钮

如果悬浮按钮为第三方应用的悬浮球/辅助功能按钮,可在测试执行前临时关闭:

  • 若悬浮按钮支持手动收起,可先通过定位点击收起按钮,执行完滚动逻辑后再恢复
  • 若为系统级悬浮窗,可通过adb命令临时关闭对应应用的悬浮窗权限,测试结束后恢复:
    # 关闭悬浮窗权限,<package_name>替换为悬浮按钮对应应用的包名
    adb shell appops set <package_name> SYSTEM_ALERT_WINDOW deny
    # 测试结束后恢复权限
    adb shell appops set <package_name> SYSTEM_ALERT_WINDOW allow
    

内容的提问来源于stack exchange,提问作者Rahul Juyal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:54:05