跳转到内容

拖拽到指定位置

拖拽到指定位置 用于把一个元素从它当前的中心位置,按你给定的横向、纵向偏移量拖动到屏幕上的另一处。它适合滑块验证、画布拖拽、进度条调节等需要按位移拖动的场景。

指令标识:DragAndDropByOffset
指令类型:网页指令
指令描述:按偏移量将元素从其中心拖动到屏幕上指定位置

工作流支持「可视化编排」和「代码编排」两种创建方式。拖拽到指定位置 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。

方式怎么用适合人群
可视化编排(推荐先学)拖入「拖拽到指定位置」节点,捕获元素、填写横纵偏移大多数用户,零代码,适合快速搭建和调试
代码编排(Python)在脚本中调用 bots.dragAndDropByOffset(selector="...", offsetX=100, offsetY=0)熟悉代码、需要复用脚本或批量生成流程的用户

第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。

  • 拖动滑块到某个位置,例如滑块验证、音量/进度调节。
  • 在画布上把元素按位移拖到目标点。
  • 需要按相对位移拖动,而不是拖到另一个具体元素上。

如果你要把元素拖到 另一个元素 上,请使用 拖拽到目标元素

  • 目标元素已经出现并可见,必要时先用等待节点。
  • 已经确认横向、纵向偏移量(单位为像素,向右、向下为正,向左、向上为负)。
  • 拖动落点在页面可视区域内。
拖拽到指定位置

下面用一个常见场景演示:把滑块向右拖动 120 像素

  1. 确认页面已经打开,滑块可见。
  2. 在拖动前添加 等待元素存在,等待滑块出现。
  3. 添加 拖拽到指定位置 节点,捕获滑块元素。
  4. 横向偏移120纵向偏移0
  5. 运行后观察滑块是否被拖到目标位置、验证是否通过。
界面名称代码属性名类型必填默认值说明
元素选择器selectorString-要拖动的元素。建议从元素库捕获。
偏移XoffsetXDouble-距元素视图内中心点的水平偏移,单位像素,负值表示向左偏移。
偏移YoffsetYDouble-距元素视图内中心点的垂直偏移,单位像素,负值表示向上偏移。
拖拽持续时间dragDurationInteger0高级参数,控制拖拽动作执行时长,单位毫秒。0 表示即时拖拽,大于 0 会让拖拽更平滑、更慢,推荐 100-1000
移动步数moveStepsInteger60-100 随机高级参数,将拖拽过程分解为多少步,默认 60-100 步随机,步数越多越平滑。
轨迹抖动addTrajectoryJitterBooleantrue高级参数,是否在拖拽轨迹中添加轻微抖动,模拟真实操作。
垂直抖动范围verticalJitterRangeDouble2.0高级参数,垂直方向抖动的最大像素数。
iframe页面定位器frameSelectorString-高级参数,目标元素在 iframe 内时填写其 xpath。
查找元素高级配置findElementOptionsJSON-高级参数,查找元素的高级配置(如超时时间等),以 JSON 配置。

该指令没有输出变量。拖动结果通过页面是否产生预期变化来判断。

  • 拖拽到指定位置 节点运行结束后状态为成功。
  • 运行日志中没有参数缺失、超时或执行失败等错误。
  • 后续节点能够继续执行,流程没有因为该节点异常中断。
现象 / 报错原文可能原因处理建议
日志报 DragAndDropByOffset requires "selector" or "selectorId"没有指定元素填写「元素选择器」或选择元素库中的元素
日志报 DragAndDropByOffset requires numeric "offsetX" and "offsetY"偏移量为空或不是数字横向、纵向偏移都填写数字
日志报 element not visible, cannot drag by offset元素不可见、没渲染或被遮挡先等待元素出现并滚动到可视区域再拖动
拖动没产生预期效果偏移量不对或落点超出范围调整偏移量,确认落点在可视区域内

代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。

# 把滑块向右拖动 120 像素
bots.dragAndDropByOffset(
selector="//*[@id='slider']/div[@class='handle']",
offsetX=120,
offsetY=0,
)

如需更平滑的拖动,可调节时长与步数:

bots.dragAndDropByOffset(
selector="//*[@id='slider']/div[@class='handle']",
offsetX=120,
offsetY=0,
dragDuration=800,
moveSteps=40,
)

如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。

A: 以元素中心为起点,向右、向下为正,向左、向上为负,单位是像素。例如 offsetX=120, offsetY=0 表示向右拖 120 像素。

Q2:和「拖拽到目标元素」有什么区别?

Section titled “Q2:和「拖拽到目标元素」有什么区别?”

A: 本指令按位移拖到屏幕上的某个坐标;拖拽到目标元素 是拖到另一个具体元素上。滑块类用本指令更合适。

Q3:拖动看起来太快或太机械怎么办?

Section titled “Q3:拖动看起来太快或太机械怎么办?”

A: 适当调大「拖动时长」和「移动步数」,并保持「轨迹抖动」开启,可让拖动更平滑、更接近真人。