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 爬虫爬取指定博客的所有文章
Feb 17 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
python实现mysql的读写分离及负载均衡
Feb 04 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
python requests post多层字典的方法
Dec 27 Python
Python类的动态绑定实现原理
Mar 21 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
python两种获取剪贴板内容的方法
Nov 06 Python
Django框架实现在线考试系统的示例代码
Nov 30 Python
python自动化之如何利用allure生成测试报告
May 02 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项目的方法
2006/10/09 PHP
社区(php&&mysql)五
2006/10/09 PHP
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
php smarty的预保留变量总结
2008/12/04 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
神盾加密解密教程(三)PHP 神盾解密工具
2014/06/08 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
原生JS封装animate运动框架的实例
2017/10/12 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
python编程嵌套函数实例代码
2018/02/11 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
python实现简单图书管理系统
2019/11/22 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
集体婚礼证婚词
2014/01/13 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书