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
相关产品推荐
相关产品推荐

