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

