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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
python 图片验证码代码分享
Jul 04 Python
python实现字符串和日期相互转换的方法
May 13 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
Python KMeans聚类问题分析
Feb 23 Python
Python3.6简单反射操作示例
Jun 14 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
学习Python列表的基础知识汇总
Mar 10 Python
Python 合并拼接字符串的方法
Jul 28 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根据分类合并数组的方法实例详解
2013/11/06 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
vue中SPA单页面应用程序详解
2017/11/07 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
python中join()方法介绍
2018/10/11 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
大学生军训感想
2014/02/16 职场文书
2015年教研员工作总结
2015/05/26 职场文书
期中考试后的感想
2015/08/07 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers