当前位置: 首页 > web >正文

鼠标移动操作

1、selenium里有一个专门的类来处理鼠标的操作: ActionChains类, 可以用来模拟鼠标操作

from selenium.webdriver.common.action_chains import ActionChains 【导包】

"""
selenium里有一个专门的类来处理鼠标的操作: ActionChains类, 可以用来模拟鼠标操作
* from selenium.webdriver.common.action_chains import ActionChains 【导包】第一步:选择鼠标的行为(参数是元素对象-element): 通过driver.find_element找到的元素,再选择鼠标行为:
* 悬浮-移动鼠标 move_to_element() -- p1
* 点击 click() --p1
* 拖拽drag_and_drop(element1,element2) --P2* 先找到element1,再找到element2,拖拽执行
* 双击double_click() ---p2
* 在特定元素上单击鼠标左键(不释放)click_and_hold() ----- p2
* 暂停 pause() 每个动作之间可以暂停一下----- p2
* release() #抬起鼠标 --p2
* 右键 context_click() :右键后打开的菜单 无法定位 不属于html页面 所以用的少。-P3第二步:执行鼠标操作行为 - perform(),鼠标操作一定要perform才会执行。
ActionChains鼠标操作的具体的使用步骤:
* 1、实例化ActionChains对象
* 2、调用你要使用的鼠标操作行为 :* 可以用链式调用 - 因为每个方法返回的都是self ,可以连续调用
* 3、调用perform()去执行鼠标操作: 一定要perform才会执行。使用场景: 当你使用了selenium普通的点击无法生效的时候 尝试用鼠标点击。【依然不行的话 可以尝试js点击】"""
import timefrom selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdef wait_element_visible(element_visible):driver_visible = WebDriverWait(driver, 8, 0.8).until(EC.visibility_of_element_located(element_visible))return driver_visibledef wait_element_clickable(element_clickable):driver_clickable = WebDriverWait(driver, 8, 0.8).until(EC.element_to_be_clickable(element_clickable))return driver_clickabledriver = webdriver.Chrome()
driver.maximize_window()
# D:\Project\python_ui01\upload_demo.html
driver.get('file:///D:/Project/python_ui01/upload_demo.html')
# 先找到下拉框的元素
name_id = (By.ID,'fu')
ele = wait_element_clickable(name_id)
#鼠标类实例化   ----perform()
ActionChains(driver).click(ele).perform()
time.sleep(3)
driver.quit()

鼠标移动

"""
selenium里有一个专门的类来处理鼠标的操作: ActionChains类, 可以用来模拟鼠标操作
* from selenium.webdriver.common.action_chains import ActionChains 【导包】第一步:选择鼠标的行为(参数是元素对象-element): 通过driver.find_element找到的元素,再选择鼠标行为:
* 悬浮-移动鼠标 move_to_element() -- p1
* 点击 click() --p1
* 拖拽drag_and_drop(element1,element2) --P2* 先找到element1,再找到element2,拖拽执行
* 双击double_click() ---p2
* 在特定元素上单击鼠标左键(不释放)click_and_hold() ----- p2
* 暂停 pause() 每个动作之间可以暂停一下----- p2
* release() #抬起鼠标 --p2
* 右键 context_click() :右键后打开的菜单 无法定位 不属于html页面 所以用的少。-P3第二步:执行鼠标操作行为 - perform(),鼠标操作一定要perform才会执行。
ActionChains鼠标操作的具体的使用步骤:
* 1、实例化ActionChains对象
* 2、调用你要使用的鼠标操作行为 :* 可以用链式调用 - 因为每个方法返回的都是self ,可以连续调用
* 3、调用perform()去执行鼠标操作: 一定要perform才会执行。使用场景: 当你使用了selenium普通的点击无法生效的时候 尝试用鼠标点击。【依然不行的话 可以尝试js点击】"""
import timefrom selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdef wait_element_visible(element_visible):driver_visible = WebDriverWait(driver, 8, 0.8).until(EC.visibility_of_element_located(element_visible))return driver_visibledef wait_element_clickable(element_clickable):driver_clickable = WebDriverWait(driver, 8, 0.8).until(EC.element_to_be_clickable(element_clickable))return driver_clickabledriver = webdriver.Chrome()
driver.maximize_window()
# D:\Project\python_ui01\upload_demo.html
driver.get('https://www.baidu.com/')
# 先找到下拉框的元素
name_id = (By.XPATH,'//span[@id="s-usersetting-top"]')
ele = wait_element_clickable(name_id)
#鼠标类实例化   ----perform()
ActionChains(driver).move_to_element(ele).perform()
time.sleep(3)
driver.quit()

2、普通的点击操作和鼠标点击操作的区别?

selenium普通的click,在点击的时候是有条件要求,被点击的元素需要是能够被点击的状态 – 有条件约束,有可能会失败
鼠标click,不会管元素是否能够被点击,直接去点击 – 没有条件约束,任何元素都可以点击 – 成功率更高
什么情况下使用鼠标click?== 如果你发现有时候通过普通的click点击不了,那你可以选择鼠标click 【后面还会讲js点击】

http://www.xdnf.cn/news/481.html

相关文章:

  • GNU,GDB,GCC,G++是什么?与其他编译器又有什么关系?
  • 4.17--4.19刷题记录(贪心)
  • swagger的简介及使用方法
  • docker基本使用命令
  • Google Agent 2 Agent 协议深度研究报告
  • Java 编译与反编译深度解析
  • Yarn基本介绍
  • 当我使用uview datetime-picker日期事件插件出行Invalid array length异常时
  • stack,queue和priority_queue
  • gis系统中如何提高shp大文件加载效率
  • 【Datawhale AI春训营】Java选手初探数据竞赛
  • 3D打印加速产品试制
  • 在RK3588上使用ZLMediaKit
  • rabbitmq 面试题
  • 体积虽小,却很好用
  • WSL+Ubuntu+miniconda环境配置
  • 淘宝淘口令解析 Api接口
  • 定制一款国密浏览器(9):SM4 对称加密算法
  • 捋一遍Leetcode【hot100】的二叉树专题
  • 微前端框架Module Federation
  • 如何在3090显卡上使用老版本torch
  • 个人自用-导入安装Hexo
  • C++红黑树实现
  • 【大疆dji】ESDK开发环境搭建(软件准备篇)
  • 详细解释浏览器是如何渲染页面的?
  • 银行数据开发日常2
  • Redis客户端下载使用
  • AI调试工具有哪些?
  • 李宏毅NLP-5-RNNTNeural TransducerMoChA
  • 加一:从简单问题到复杂边界的深度思考