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

RobotFramework/Selenium:无需定位器的鼠标平移是否有现成关键字?

关于SeleniumLibrary无定位器鼠标平移操作的解决方案

首先直接给结论:SeleniumLibrary没有专门提供无需定位器的鼠标平移(按下-移动-松开)现成关键字,不过我们可以借助Selenium原生的ActionChains API,自己封装一个符合需求的操作,完全不需要依赖元素定位器。

实现思路

Selenium的ActionChains支持一系列鼠标动作的链式调用,其中click_and_hold()方法如果不传入任何元素参数,就会在当前鼠标所在位置按下左键;搭配move_by_offset(x, y)实现指定偏移量的移动,最后用release()松开鼠标,整个动作链执行后就完成了你要的鼠标平移操作。

在Robot Framework中实现的具体方式

你可以自定义一个Robot Framework关键字来封装这个逻辑,示例代码如下:

*** Settings ***
Library    SeleniumLibrary

*** Keywords ***
# 自定义关键字:无定位器鼠标平移
Drag Mouse By Offset Without Locator
    [Arguments]    ${x_offset}    ${y_offset}
    # 获取当前WebDriver实例
    ${driver}=    Get WebDriver
    # 调用Selenium的ActionChains执行动作链
    Execute Python    from selenium.webdriver.common.action_chains import ActionChains; ActionChains(${driver}).click_and_hold().move_by_offset(${x_offset}, ${y_offset}).release().perform()

使用示例

比如你想让鼠标从当前位置向右移动150像素、向下移动80像素,直接调用这个自定义关键字即可:

Drag Mouse By Offset Without Locator    150    80

注意事项

  • 如果需要按下右键或中间键,可以把click_and_hold()换成context_click()(右键)或者click_and_hold(button=2)(中间键),记得同步调整release()的对应按键(如果需要的话)。
  • 执行这个操作前,请确保鼠标已经处于你想要的起始位置——如果需要先把鼠标移动到某个位置,也可以用ActionChains的move_to_element()(如果有元素)或者move_by_offset()(从当前位置先移动到目标起始点)来前置处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:45:17