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

鼠标移动操作

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点击】

相关文章:

  • C++原码、反码和补码
  • YuE本地部署完整教程,可用于ai生成音乐,歌曲
  • 6. 话题通信 ---- 使用自定义msg,发布方和订阅方cpp,python文件编写
  • Linux cmp 命令使用详解
  • Python语法系列博客 · 第8期[特殊字符] Lambda函数与高阶函数:函数式编程初体验
  • git合并分支并推送
  • FPGA系列之DDS信号发生器设计(DE2-115开发板)
  • firewalld 防火墙
  • 从零开始学A2A五:A2A 协议的安全性与多模态支持
  • 第三届世界科学智能大赛新能源赛道:新能源发电功率预测-数据处理心得体会1
  • 压滤机与锡泥产生效率
  • 解决echarts饼图label显示不全的问题
  • Keil MDK中禁用半主机(No Semihosting)
  • LINUX419 更换仓库(没换成)find命令
  • 深度补全网络:CSPN++ 有哪些开源项目
  • FFUF指南
  • 【langchain4j】Springboot如何接入大模型以及实战开发-AI问答助手(一)
  • C 语 言 --- 指 针 4(习 题)
  • [Java EE] Spring AOP 和 事务
  • 交换网络基础
  • 影子调查丨义门陈遗址建筑被“没收”风波
  • 金融监管总局:建立保险销售人员违法违规导致经济损失的佣金薪酬追索扣回机制
  • 直播电商监管新规将公开征求意见,出重拳净化行业生态
  • 中华民族共同体体验馆第二期在北京开展,上海体验区展现人民城市与民族团结交融之美
  • 美法官裁定谷歌非法垄断在线广告
  • 支持民营企业上市融资,上海将有什么新举措?