利用PyUserInput页面元素实现拖拽

实际脚本编写中遇到,利用selenium2Library中drag and drop 和 by offset方法都不能实现拖拽的时候。多次尝试后,改用PyUserInput中的Pymouse,但是其中drag方法仍然不能实现拖拽,脑细胞死一片后,发现pymouse的drag方法中用了press和release方法,但并不能确定哪个方法导致的拖拽失效。后来换了种思路如下成功实现拖拽:

#-*-coding:utf-8-*-
from pymouse import PyMouse
import time

n=PyMouse()
time.sleep(1)
n.move(120,250)#移动到要点击的元素上
time.sleep(2)
n.press(120,250)#左键按住
time.sleep(2)
n.move(500,270)#移动鼠标,此时左键是没有释放的
time.sleep(1)
n.click(500,270)#释放鼠标,尽量不用release
x,y=n.position()

尽量加上sleep,否则会很大几率失败。我也不清楚为什么。

我一直纠结的是写博文的时候,博客分类究竟选什么,没有测试这个分类,然后还是必填项。。。。test。。。。

实现页面元素拖拽功能,通常涉及到前端JavaScript库,如`Draggable`(Vue.js)、`react-draggable`(React)、或原生HTML5的`draggable`属性配合CSS样式。以下是基本步骤: 1. **设置拖拽属性**:首先,需要给目标元素添加`draggable`属性,并指定允许的拖动行为(例如是否跟随鼠标、禁用默认处理等)。同时,可以设置`ondragstart`事件,用于存储起始位置。 ```html <div draggable="true" ondragstart="dragStart(event)"> 拖动我 </div> ``` 2. **编写拖拽事件处理器**: - `dragStart(e)`:在这个函数中,获取拖动元素的位置信息,阻止浏览器的默认行为,并传递数据(通常是元素本身或者其ID)到`dataTransfer`对象。 ```javascript function dragStart(event) { event.dataTransfer.setData('text', this.id); event.preventDefault(); } ``` 3. **监听drop事件**:在目标区域设置`ondrop`事件,接收并处理释放的目标位置,以及从`dataTransfer`获取的数据。 ```html <div ondrop="drop(event)" ondragover="allowDrop(event)"> 放在这里 </div> <script> function allowDrop(e) { e.preventDefault(); } function drop(e) { const draggedElementId = e.dataTransfer.getData('text'); // 在这里处理元素放置,比如改变DOM结构或保存状态 console.log(`已将元素 ${draggedElementId} 移至新的位置`); } </script> ``` 4. **优化用户体验**:可以添加一些额外的效果,如视觉反馈(比如拖动时的线条),或者在拖动过程中禁止其他元素响应。 以上是一个基础的实现,实际应用可能需要考虑兼容性和复杂交互需求,例如支持多个层级的拖放、拖放优先级等。如果你是在框架环境下,相应的API可能会有所不同,但是核心原理是一致的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值