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中关于使用模块的基础知识
May 24 Python
Python出现segfault错误解决方法
Apr 16 Python
用python写一个windows下的定时关机脚本(推荐)
Mar 21 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
Python实现八皇后问题示例代码
Dec 09 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 Python
pycharm配置git(图文教程)
Aug 16 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
Sep 17 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
python实现人机五子棋
Mar 25 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
Javascript----文件操作
2007/01/18 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中replace方法实例分析
2014/08/20 Python
python下10个简单实例代码
2017/11/15 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
Sanic框架流式传输操作示例
2018/07/18 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
python调用百度语音识别api
2018/08/30 Python
Python中GIL的使用详解
2018/10/03 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
python3实现多线程聊天室
2018/12/12 Python
python实现名片管理系统项目
2019/04/26 Python
python两种注释用法的示例
2020/10/09 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
SQL SERVER面试资料
2013/03/30 面试题
入党积极分子思想汇报范文
2014/01/05 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python