Selenium3.x Python实现鼠标悬停的几种方法
来源:互联网 发布:设计数据库的软件 编辑:程序博客网 时间:2024/06/05 11:26
博文章节
- 博文章节
- 本机环境介绍
- 什么是鼠标悬停
- 通过move_to_element方法实现
- 通过调用JS方法实现
- 通过调用move_by_offset方法实现
- 通过调用move_to_element_with_offset方法实现
- 拓展延伸
本机环境介绍
编码语言(Python3.6.2)
(py3env) C:\Users\XXX\iCloudDrive\PycharmProjects\SAT>python -VPython 3.6.2
Selenium版本(3.7.0)
(py3env) C:\Users\XXX\iCloudDrive\PycharmProjects\SAT>pip show seleniumName: seleniumVersion: 3.7.0Summary: Python bindings for Selenium
什么是“鼠标悬停”
当鼠标光标移到页面某元素上并停留,页面以文字、图片等形式弹出内容,当鼠标移开时,弹出内容消失。如百度首页以下样式:
通过”move_to_element”方法实现
# -*- coding: utf-8 -*-import timefrom selenium import webdriverfrom selenium.webdriver import ActionChainsfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDriverWaitif __name__ == '__main__': chrome_driver_path = "C:\\Users/XXX\\iCloudDrive\\PycharmProjects\\SAT\\sat\\resource\\chromedriver.exe" driver = webdriver.Chrome(chrome_driver_path) driver.get('https://www.baidu.com/') driver.maximize_window() menu_xpath = "//a[text()='更多产品']" # 更多产品XPATH more_menu = WebDriverWait(driver=driver, timeout=15).until(EC.visibility_of_element_located((By.XPATH, menu_xpath))) ActionChains(driver=driver).move_to_element(more_menu).perform() time.sleep(3) # 仅为能达到悬停效果睡眠,可删除 driver.quit()
通过调用JS方法实现
# -*- coding: utf-8 -*-import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDriverWaitif __name__ == '__main__': chrome_driver_path = "C:\\Users/zhenfeng.liu\\iCloudDrive\\PycharmProjects\\SAT\\sat\\resource\\chromedriver.exe" driver = webdriver.Chrome(chrome_driver_path) driver.get('https://www.baidu.com/') driver.maximize_window() js = """ var evObj = document.createEvent('MouseEvents'); evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); arguments[0].dispatchEvent(evObj); """ menu_xpath = "//a[text()='更多产品']" more_menu = WebDriverWait(driver=driver, timeout=15).until(EC.visibility_of_element_located((By.XPATH, menu_xpath))) driver.execute_script(js, more_menu) time.sleep(3) driver.quit()
通过调用”move_by_offset”方法实现
此方法不常用,因为获取偏移量较为困难.
# -*- coding: utf-8 -*-import timefrom selenium import webdriverfrom selenium.webdriver import ActionChainsif __name__ == '__main__': chrome_driver_path = "C:\\Users/XXX\\iCloudDrive\\PycharmProjects\\SAT\\sat\\resource\\chromedriver.exe" driver = webdriver.Chrome(chrome_driver_path) driver.get('https://www.baidu.com/') driver.maximize_window() ActionChains(driver=driver).move_by_offset(xoffset=1, yoffset=1).perform() # 相对当前位置的X/Y偏移量 time.sleep(3) driver.quit()
通过调用”move_to_element_with_offset”方法实现
此方法不常用,因为获取偏移量较为困难.
# -*- coding: utf-8 -*-import timefrom selenium import webdriverfrom selenium.webdriver import ActionChainsif __name__ == '__main__': chrome_driver_path = "C:\\Users/zhenfeng.liu\\iCloudDrive\\PycharmProjects\\SAT\\sat\\resource\\chromedriver.exe" driver = webdriver.Chrome(chrome_driver_path) driver.get('https://www.baidu.com/') driver.maximize_window() element = driver.find_element_by_name('tj_trnews') # 相比参照元素element的X/Y偏移量 ActionChains(driver=driver).move_to_element_with_offset(to_element=element, xoffset=1, yoffset=1).perform() time.sleep(3) driver.quit()
拓展延伸
引用:JavaScript获取DOM元素位置和尺寸大小
阅读全文
1 0
- Selenium3.x Python实现鼠标悬停的几种方法
- Java+Selenium3方法篇28-Actions-鼠标悬停
- Java+Selenium3方法篇28-Actions-鼠标悬停
- 【翻译】【总结】UGUI:实现鼠标悬停效果的方法
- Python selenium的webdriver之鼠标悬停
- 用css实现的鼠标悬停效果
- 用html语言实现鼠标悬停放大图片的效果的方法
- 在ASP.NET中实现鼠标移动悬停在DataGrid时高亮显示这一行的方法
- 在ASP.NET中实现鼠标移动悬停在DataGrid时高亮显示这一行的方法
- c#编写仿Firebug,IE Developer Toolbar 鼠标悬停时选中元素的实现方法
- JQhover实现鼠标悬停操作
- CSS3实现鼠标悬停动画
- css实现鼠标悬停时滑出层
- Html中鼠标悬停显示二级菜单的两种方法
- 鼠标悬停,显示详情 最简单的方法
- 模拟淘宝侧边服务模块鼠标悬停效果的三种实现方式总结
- 实用:实现鼠标悬停显示不同的页面(转)
- ajax+php实现的鼠标悬停五星打分
- TensorFlow学习--tensorflow图像处理--添加标注框
- 日常手残
- [深度学习]Ubuntu16.04 + GTX 1050 + cuda8.0 + cuDNN5.1 + caffe安装详解
- 从控制台接收输入字符【20171114练习】
- 虎扑网评论基础抓取
- Selenium3.x Python实现鼠标悬停的几种方法
- 电路小任务
- 小白学习javascript——运算符
- sqlserer2008数据库还原
- 阿里云centos7配置 vsftpd
- Java 位运算符和移位运算符
- mysql分表
- 欢迎使用CSDN-markdown编辑器
- 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。