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

Android自动化:Robot Framework中Tap With Positions关键字使用方法

解决Robot Framework AppiumLibrary中Long Press替代方案(Tap With Positions)的写法问题

Selenium v4不再支持long press关键字,改用Tap With Positions实现长按操作时,你提供的示例存在小语法问题,以下是修正后的写法及更实用的场景示例:

基础单手指长按写法(硬编码坐标)

如果已知要长按的位置坐标,可以直接创建坐标列表:

# 1. 创建单手指的坐标列表(格式为 [x坐标, y坐标])
@{singleFinger}    Create List    ${100}    ${500}
# 2. 将手指坐标列表包装为手势位置列表(即使单手指也需要外层列表)
@{fingerPositions}    Create List    ${singleFinger}
# 3. 执行长按:第一个参数是持续时间(毫秒),第二个是位置列表
Tap With Positions    ${1000}    @{fingerPositions}

更灵活的写法(通过元素定位获取坐标)

实际自动化中更推荐通过元素定位获取坐标,避免硬编码坐标适配问题:

# 1. 定位目标元素(可根据实际情况用id/xpath等定位方式)
${target_element}    Find Element    id=your_target_element_id
# 2. 获取元素的中心坐标(若需要其他位置可调整计算方式)
${element_x}    Get Element Attribute    ${target_element}    x
${element_y}    Get Element Attribute    ${target_element}    y
# 3. 组装手指坐标与位置列表
@{singleFinger}    Create List    ${element_x}    ${element_y}
@{fingerPositions}    Create List    ${singleFinger}
# 4. 执行长按1秒
Tap With Positions    ${1000}    @{fingerPositions}

关键参数说明

  • ${1000}:手势持续时间,单位为毫秒,数值越大长按时间越长
  • @{fingerPositions}:包含所有参与手势的手指坐标列表的外层列表,单手指长按只需传入一个[x,y]坐标列表;如果是双手指操作(如缩放),则传入两个[x,y]坐标列表

你的示例问题修正

你提供的示例中@{secondFinger} create list |${700} ${500}里的竖线是多余的,会导致列表元素格式错误,正确写法应为@{secondFinger} Create List ${700} ${500}。

内容的提问来源于stack exchange,提问作者Mimo T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:40:19