selenium:鼠标模拟操作ActionChains

news2024/11/28 4:42:46

ActionChains

1.导入ActionChains包

from selenium.webdriver import ActionChains


2. 执行原理
       调用ActionChains的方法时,不会立即执行,而是将所有的操作,按顺序存放在一个队列里,当你调用perform()方法时,队列中的事件会依次执行
3. 基本用法:

  • 生成一个动作action=ActionChains(driver)
  • 动作添加方法1 action.方法1
  • 动作添加方法2 action.方法2
  • 调用perform()方法执行(action.perform())

4. 具体写法
链式写法

  • ActionChains(driver).move_to_element(element).click(element)perform()

分布写法:

  • actions = ActionChains(driver)
  • actions.move to element(element)
  • actions.click(element)
  • actions.perform()

示例:

    def test_actionchains(self):
        self.driver.get("https://www.baidu.com/")
        element = self.driver.find_element('xpath',"//*[@id='s-top-left']/a[1]")
        action = ActionChains(self.driver)
        action.click(element)
        action.perform()

5. 不同操作对应不同的方法:

  • click(on_element=None)    #单击鼠标左键
  • click_and_hold(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)   #拖拽到某个坐标然后松开
  • key_down(value, element=None)    #按下某个键盘上的键
  • key_up(value, element=None)   #松开某个键
  • move_by_offset(xoffset, yoffset)    #鼠标从当前位置移动到某个坐标
  • move_to_element(to_element)   #鼠标移动到某个元素
  • move_to_element_with_offset(to_element, xoffset, yoffset)  #移动到距某个元素多少距离的位置
  • perform()    # 执行
  • release(on_element=None)   #在某个元素位置松开鼠标左键
  • send_keys(*keys_to_send)  #发送某个键到当前焦点的元素
  • send_keys_to_element(element, *keys_to_send)  #发送某个键到指定元素

示例

class TestClick:

    def setup(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(3)#隐式等待
        self.driver.get('https://ip:port/')

    def test_click(self):
        e = self.driver.find_element(by='xpath',value='//*[@id="root"]/main/div[2]/div[4]/div[2]/div[1]/div/div[1]/div[2]/span')
        ActionChains(self.driver).move_to_element(e).click(e).perform()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EMC学习笔记(十五)射频PCB的EMC设计(二)

射频PCB的EMC设计(二) 1.滤波1.1 电源和控制线的滤波1.2 频率合成器数据线、时钟线、使能线的滤波 2.接地2.1 接地分类2.2 大面积接地2.3 分组就近接地2.4 射频器件接地2.5 接地时应该注意的问题2.6 接地平面的分布 1.滤波 1.1 电源和控制线的滤波 随着…

项目经理如何处理项目依赖性?

项目不是凭空产生的,项目管理中的依赖性涉及管理和安排项目任务,同时牢记其顺序和要求。如果开始任务B需要先完成任务A,那么可以说任务B依赖于任务A。 这现在听起来可能很简单,但在具有多个相互依赖的任务的复杂项目中&#xff0…

duilib绝对定位与相对定位

文章目录 前言1、绝对位置(floattrue)2、窗口3、布局及控件4、相对位置(floatfalse)5、窗口6、布局与控件7、嵌套在布局与控件之中的布局与控件 前言 duilib中窗口,布局,控件等在屏幕上的显示位置都是按照…

Selenium自动化测试-设置元素等待

selenium中有三种时间等待: 强制等待:sleep隐式等待:implicitly_wait显示等待:WebDriverWait 1.sleep 让程序暂停运行一定时间,等待时间到达后继续运行。 使用sleep,需先导入time模块,impor…

一.《某三国》人物属性及其相关属性

人物属性 1.找一个可以操控变化的属性来找 比如血量.坐标或者五铢(绑定金币),这里我们用五铢找 五铢只要打一个怪就会加一点 2.我们直接搜变化即可搜到 五铢地址0AD64EAC 3.我们CE给地址下访问 4.这里我们最后找第一条访问 因为他是被改变的 或者你CE给地址下写入 5.然后我…

BUFG/BUFGCE/BUFH/BUFHCE

对BUFG/BUFGCE/BUFH/BUFHCE简单了解。 下图为 7 系列 FPGA 时钟架构图: BUFG 全局时钟缓冲器。它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。BUFG连接的是芯片中的专用时钟资源,能减少信号…

【golang中的切片的相关知识点】[ ] slice

golang-切片 切片的定义和初始化切片的内存分析切片的操作获取长度和容量追加元素复制切片 切片的遍历切片的特性总结 Golang中的切片是一种灵活且强大的数据结构,它可以动态地增长和缩小。切片是基于数组的抽象,它提供了更方便的操作和更灵活的内存管理…

系列五、RocketMQ集群搭建(双主双从)

一、概览 二、集群特点 2.1、NameServer NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。 2.2、Broker Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Sla…

数字孪生和人工智能异同?

数字孪生和人工智能是两个近年来备受关注的前沿技术,在不同领域发挥着重要作用。虽然两者都涉及数据处理和模拟,但其本质和应用有着显著的区别。本文将介绍数字孪生和人工智能之间的联系和区别,以帮助读者更好地理解它们在不同场景下的作用。…

虚拟机(Ubuntu1804)相机与激光雷达联合标定实现过程记录

在智能小车录制的点云数据在rviz打开一定要修改Fixed Frame为laser_link,这样才能看到点云,注意此时用的是雷神激光雷达,话题名是lslidar_,可采用rostopic list查看具体名称 1、新建一个终端打开roscore roscore2、在文件夹libratia中新建一…

Jmeter常用功能-参数化介绍

JMeter也有像LR中的参数化,本篇就来介绍下JMeter的参数化如何去实现。 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。 这个时…

idea2023.3安装及配置

idea2023.3安装及配置 一.安装idea 1.卸载旧版本idea 2.下载idea旗舰版 Download IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains 旗舰版是收费的需要破解,社区版是免费的不需要破解,开发人员建议旗舰版 3.安装idea 修改安装目…

[LINUX]之文本匹配多行

在linux中创建文本如下: (1)显示test.txt文件里匹配test3字符串那行以及上下1行 cat test.txt |grep -C 1 test3 (2)显示test.txt文件里匹配test3字符串那行以及下面2行 cat test.txt |grep -A 2 test3 (3&…

Qt6 Qt Quick UI原型学习QML第四篇

文章目录 布局项目【对齐】QML语句QML语法解释 布局项目【对齐】 QML提供了一种灵活的方式来使用锚来布局项目。锚定的概念是项目的基础,并且可用于所有视觉QML元素。锚的作用就像一个契约,比竞争的几何变化更强。锚是相对性的表达;你总是需…

三季度上市,比亚迪海豹DM-i内饰官图发布,延续海洋风格

据报道,比亚迪海洋网旗下全新车型海豹 DM-i今日发布了内饰官方图片。新车内部采用了独特的“海洋美学”设计理念,并体现了海洋网最新一代内饰风格。消息称,这款车型将于第三季度上市,定位为中大型混合动力轿车。 值得注意的是&…

【QT】元对象系统学习笔记(一)

QT元对象系统 01、元对象系统1.1、 元对象运行原则1.2、 Q_OBJECT宏1.3、 Qt Creator启动元对象系统1.4、 命令行启动元对象(不常用) 02、反射机制2.1、 Qt实现反射机制2.2、 反射机制获取类中成员函数的信息2.1.1、 QMetaMethon类2.1.2、QMetaObject类 …

【程序员必须掌握哪些算法?】

一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓!”算法吧~ 常见算法介绍 本文所介绍的排序算法均以升序为例。 文章目录 常见算法介绍一 …

【解决】mysql卸载之后安装不同的版本导致mysqld无法启动

解决mysql不同版本之间数据的冲突 一. 背景二. 出现的问题三. 问题的原因四. 解决方式 一. 背景 说起来也是个巧合,在我安装mysql5.7版本的时候,看走眼了,安装成mysql8.0版本的了。于是乎,我当时觉得8.0,嗯&#xff0…

机械臂多任务逆运动学(优先级同等和存在优先级)

我们经常使用微分运动学来计算机器人的逆运动学,对于单个任务的机械臂的逆运动学使用的是梯度投影法: 冗余机械臂求解逆运动学解——梯度投影法 但是对于多任务的逆运动学在一般的机器人学里面很少有提及,最近看到了相关的论述,…

IP基础知识总结

IP他负责的是把IP数据包在不同网络间传送,这是网络设计相关的,与操作系统没有关系。所以这部分知识,不是网络的重点。IP和路由交换技术联系紧密。但是要作为基本知识点记住。 一、基本概念 网络层作用:实现主机与主机之间通信。 …