Python爬虫之Selenium鼠标事件的实现


Posted in Python onDecember 04, 2020

一、常用方法

函数名 说明
click(on_element=None) 点击鼠标右键
click_and_hold(on_element=None) 点击鼠标左键,不松开
release(on_element=None) 在某个元素位置松开鼠标左键
context_click(on_element=None) 点击鼠标右键
double_click(on_element=None) 双击鼠标左键
drag_and_drop(source, target) 拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) 拽到某个坐标然后松开
move_by_offset(xoffset, yoffset) 鼠标从当前位置移动到某个坐标
move_to_element(to_element) 鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset) 移动到距某个元素(左上角坐标)多少距离的位置
perform() 执行所有 ActionChains 中存储的行为,相当于提交

二、代码示例

选几个经常使用的测试一下,其他事件语法相同

from selenium import webdriver
import time
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.baidu.cn")

#定位到需要右击的元素,然后执行鼠标右击操作(例:对新闻标签进行右击)
context_click_location = driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[3]/a[1]')
ActionChains(driver).context_click(context_click_location).perform()

time.sleep(2) #睡两秒,看一下效果

# 定位到需要悬停的元素,然后执行鼠标悬停操作(例:对设置标签进行悬停)
move_to_element_location = driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[3]/a[8]")
ActionChains(driver).move_to_element(move_to_element_location).perform()

time.sleep(2) #睡两秒,看一下效果

# 鼠标悬浮后点击高级搜索
driver.find_element_by_xpath("/html/body/div[1]/div[6]/a[2]").click()

time.sleep(2) #睡两秒,看一下效果

driver.quit() #关闭所有标签页

由于百度没有可拖动的元素,所以在菜鸟上找了一个网址进行测试,由于菜鸟上的网页是使用frame内嵌的,所以添加了个处理frame的过程,关于frame的处理请参考我的另一篇文章:Python爬虫 - Selenium(8)frame/iframe表单嵌套页面

from selenium import webdriver
from selenium.webdriver import ActionChains
import time

driver = webdriver.Chrome()
driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-example-draggable-scroll")
# 切换到目标元素所在的frame
driver.switch_to.frame("iframeResult")

# 确定拖拽目标的起点和终点,完成拖拽
start_location = driver.find_element_by_id("draggable")
end_location = driver.find_element_by_id("draggable3")
ActionChains(driver).drag_and_drop(start_location,end_location).perform()

time.sleep(2) #睡两秒,看一下效果

driver.quit() #关闭所有标签页

Selenium文集传送门:

标题 简介
Python爬虫 - Selenium(1)安装和简单使用 详细介绍Selenium的依赖环境在Windows和Centos7上的安装及简单使用
Python爬虫 - Selenium(2)元素定位和WebDriver常用方法 详细介绍定位元素的8种方式并配合点击和输入、提交、获取断言信息等方法的使用
Python爬虫 - Selenium(3)控制浏览器的常用方法 详细介绍自定义浏览器窗口大小或全屏、控制浏览器后退、前进、刷新浏览器等方法的使用
Python爬虫 - Selenium(4)配置启动项参数 详细介绍Selenium启动项参数的配置,其中包括无界面模式、浏览器窗口大小设置、浏览器User-Agent (请求头)等等
Python爬虫 - Selenium(5)鼠标事件 详细介绍鼠标右击、双击、拖动、鼠标悬停等方法的使用
Python爬虫 - Selenium(6)键盘事件 详细介绍键盘的操作,几乎包含所有常用按键以及组合键
Python爬虫 - Selenium(7)多窗口切换 详细介绍Selenium是如何实现在不同的窗口之间自由切换
Python爬虫 - Selenium(8)frame/iframe表单嵌套页面 详细介绍如何从当前定位的主体切换为frame/iframe表单的内嵌页面中
Python爬虫 - Selenium(9)警告框(弹窗)处理 详细介绍如何定位并处理多类警告弹窗
Python爬虫 - Selenium(10)下拉框处理 详细介绍如何灵活的定位并处理下拉框
Python爬虫 - Selenium(11)文件上传 详细介绍如何优雅的通过send_keys()指定文件进行上传
Python爬虫 - Selenium(12)获取登录Cookies,并添加Cookies自动登录 详细介绍如何获取Cookies和使用Cookies进行自动登录
Python爬虫 - Selenium(13)设置元素等待 详细介绍如何优雅的设置元素等待时间,防止程序运行过快而导致元素定位失败
Python爬虫 - Selenium(14)窗口截图 详细介绍如何使用窗口截图
Python爬虫 - Selenium(15)关闭浏览器 详细介绍两种关闭窗口的区别

到此这篇关于Python爬虫之Selenium鼠标事件的实现的文章就介绍到这了,更多相关Selenium 鼠标事件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
用Python中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
python动态性强类型用法实例
May 09 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
Jun 07 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
Python反射和内置方法重写操作详解
Aug 27 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
python中Lambda表达式详解
Nov 20 Python
matplotlib自定义鼠标光标坐标格式的实现
Jan 08 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 Python
django上传文件的三种方式
Apr 29 Python
Selenium 配置启动项参数的方法
Dec 04 #Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 #Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 #Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 #Python
Selenium 安装和简单使用的实现
Dec 04 #Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 #Python
Python实现中英文全文搜索的示例
Dec 04 #Python
You might like
php Undefined index的问题
2009/06/01 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
PHP实现的简单mock json脚本分享
2015/02/10 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
php微信开发之图片回复功能
2018/06/14 PHP
jquery连缀语法如何实现
2012/11/29 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
Javascript 严格模式use strict详解
2017/09/16 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Python实现的最近最少使用算法
2015/07/10 Python
python实现的自动发送消息功能详解
2019/08/15 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
python脚本后台执行方式
2019/12/21 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
营业员个人总结的自我评价
2013/10/25 职场文书
献爱心倡议书
2014/04/14 职场文书
市场策划求职信
2014/08/07 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
在Django中使用MQTT的方法
2021/05/10 Python