ui自动化中,鼠标操作

from selenium.webdriver import ActionChainsaction = ActionChains(driver)      # 然后把driver作为参数,实例化一个action对象

练习地址:https://sahitest.com/demo/

悬停例子(百度首页)

action.move_to_element(ele).perform()

from selenium import webdriver
import time# 创建浏览器驱动对象from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()            # 参数写浏览器驱动文件的路径,若配置到环境变量就不用写了
# 访问网址
driver.get("https://www.baidu.com/")"""
1. 导入
"""
from selenium.webdriver import ActionChains
"""
2. 实例化一个action对象
"""
action =ActionChains(driver)"""
悬停到百度首页,的【更多】按钮上面
"""
ele = driver.find_element(By.XPATH,' //*[contains(text(),"更多")]')
action.move_to_element(ele).perform()

拖动(a到b)

使用:drag_and_drop


from selenium import webdriver
import time# 创建浏览器驱动对象from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()            # 参数写浏览器驱动文件的路径,若配置到环境变量就不用写了
# 访问网址
driver.get("https://sahitest.com/demo/dragDropMooTools.htm")"""
1. 导入
"""
from selenium.webdriver import ActionChains
"""
2. 实例化一个action对象
"""
action =ActionChains(driver)"""
把ele元素,拖动到ele2的元素位置
"""
ele1 = driver.find_element(By.CSS_SELECTOR,'#dragger.drag')
ele2 = driver.find_element(By.CSS_SELECTOR,'div.item')      # 第一个  用  :nth-child()  不行?
ele4 = driver.find_element(By.XPATH,' //*[contains(text(),"Item 4")]') # 第4个# 睡一秒后,开始拖动
time.sleep(1)
action.drag_and_drop(ele1,ele2).perform()   # 拖动到1
time.sleep(0.5)
action.drag_and_drop(ele1,ele4).perform()   # 拖动到4

拖动(a便宜一个坐标量)

使用:drag_and_drop_by_offset

使用了一点串改,让网站不知道是selenium控制的webdriver

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source":"""Object.defineProperty(navigator,'webdriver',{get: () => undefined})"""
})

from selenium import webdriver
import time# 创建浏览器驱动对象from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()            # 参数写浏览器驱动文件的路径,若配置到环境变量就不用写了# 执行js,串改一下,让网站不知道是自动化的操作。
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source":"""Object.defineProperty(navigator,'webdriver',{get: () => undefined})"""
})
# 访问网址
driver.get("http://vip.ytesting.com/")
driver.maximize_window()from selenium.webdriver import ActionChains
action =ActionChains(driver)"""计算距离"""
ele = driver.find_element(By.CSS_SELECTOR,"#nc_1_n1z")      # 滑块元素ele_t =driver.find_element(By.ID,'nc_1__scale_text')        # 滑动条distance = ele_t.rect['width'] -ele.rect['width']
print(distance)action.drag_and_drop_by_offset(ele,distance,0).perform()

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

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

相关文章

深入浅出服务网格(Service Mesh):现代微服务架构的护航者

什么是服务网格? 服务网格是一种专用于处理微服务间通信的基础设施层,通常以轻量级代理(sidecar)的形式部署在每个服务实例旁边。它主要负责以下几项任务: 服务发现:自动检测和注册服务实例,使…

Springboot注意点

1.Usermapper里加param注解 2.RequestParam 和 RequestBody的区别: RequestParam 和 RequestBody的区别: RequestParam 和 RequestBody 是Spring框架中用于处理HTTP请求的两个不同的注 get请求一般用url传参数,所以参数名和参数的值就在ur…

Type-C音频转接器方案

在数字化时代,音频设备作为我们生活中不可或缺的一部分,其连接方式的便捷性和高效性显得尤为重要。Type-C音频转接器,作为一种新型的音频连接解决方案,正逐渐走进我们的生活,以其独特的优势改变着我们的音频体验。 一、…

Vue Router 4与路由管理实战

title: Vue Router 4与路由管理实战 date: 2024/6/7 updated: 2024/6/7 excerpt: 这篇文章介绍了如何在Vue.js应用中利用Vue Router实现单页面应用的路由管理,包括配置路由、导航守卫的使用、路由懒加载以优化性能以及动态路由的实现方法,旨在提升用户体…

Python3 笔记:字符串的 strip()、lstrip()、rstrip()

1、strip() 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。 语法:str.strip([chars]) chars:移除字符串头尾指定的字符序…

JAVA多维动态数组

JAVA多维动态数组 一维数组数组大小 size()增加元素 add获取元素 get删除元素 remove修改元素 set输出 二维数组三维数组 ArrayList 类是一个可以动态修改的数组(队列),与普通数组的区别就是它是没有固定大小的限制,提供了相关的添…

xiaolingcoding 图解网络笔记——基础篇

文章目录 参考一、网络模型有哪几层DMANAPI 机制二、键入网址到网页显示,期间发生了什么?1. HTTP2. DNS3. 协议栈4. TCP5. IP6. MAC7. 网卡8. 交换机9. 路由器10. 服务器 与 客户端的互相扒皮(添加、删除头部信息)参考图HTTP 请求…

Vue3【六】setup的使用和setup的返回值

Vue3【六】setup的使用和setup的返回值 setup函数的使用,和vue2的选项式不同 vue3的组合式使用的是setup函数 通过返回值将数据和方法传到页面 返回值也可以是一个箭头函数 setup先于 data和method执行所有无法读取到this和data,method的内容&#xff0c…

顶顶通呼叫中心中间件-asr录音路径修改(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-asr录音路径修改(mod_cti基于FreeSWITCH) 录音路径模板。如果不是绝对路径,会把这个路径追加到FreeSWITCH的recordings后面。支持变量,比如日期 ${strftime(%Y-%m-%d)}。最后一个录音文件路径会保存到变量 ${cti_asr_last_record_…

几个日期和时间相关的函数,用于格式化日期、时间和毫秒数

几个日期和时间相关的函数,用于格式化日期、时间和毫秒数。 javascript /** 返回年月日param {Date} date - 日期对象param {string} [splitor‘-’] - 分隔符,默认为’-’returns {string} - 格式化后的日期字符串,格式为YYYY-MM-DD */ exp…

Vue3实现当访问的路由不存在时跳转到404页面的方法详解

Vue3实现当访问的路由不存在时跳转到404页面的方法详解 一、前言1. 创建 404 组件2. 配置路由3. 使用 router-link 一、前言 在 Vue 3 中,你可以使用 Vue Router 来实现当访问的路由不存在时跳转到 404 页面。以下是详细的方法: 1. 创建 404 组件 首先…

03-3.2.4 双端队列

👋 Hi, I’m Beast Cheng👀 I’m interested in photography, hiking, landscape…🌱 I’m currently learning python, javascript, kotlin…📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

1348:【例4-9】城市公交网建设问题

【解题思路】 该题难点是要保存最小生成树的所有边&#xff0c;对于不同的求最小生成树的算法&#xff0c;有不同的方法来完成。 【参考代码】 prim算法 #include<bits/stdc.h> using namespace std; const int N 105; // 定义常量 N&#xff0c;表示数组大小 int n…

Vue3 时间格式化

1、基础使用 https://juejin.cn/post/6933548549321785352 2、template里面直接使用 $dayjs(info.patientBirthday).format("YYYY-MM-DD") 3、script里面使用 import { ref, reactive, getCurrentInstance } from "vue"; const { proxy } getCurren…

python的rolling_mean()函数

5.1 rolling_mean函数解释 pandas.rolling_mean(arg, window, min_periodsNone, freqNone, centerFalse, howNone, **kwargs)rolling_mean函数表示通过移动窗口求平均值&#xff0c;即用当前值和前[window]个数值取平均数&#xff0c;得到新的数值。 import pandas as pddata…

C语言详解(动态内存管理)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

Django 传递额外参数给视图函数

本书1-7章样章及配套资源下载链接: https://pan.baidu.com/s/1OGmhHxEMf2ZdozkUnDkAkA?pwdnanc 源码、PPT课件、教学视频等&#xff0c;可以从前言给出的下载信息下载&#xff0c;大家可以评估一下。 在Django框架中&#xff0c;URLconf模块还支持一种传递额外参数给视图函…

2024-06-07 Unity 编辑器开发之编辑器拓展8 —— Scene 窗口拓展

文章目录 1 Handles 类1.1 Scene 响应函数1.2 自定义窗口中监听 Scene1.3 Handles 常用 API2.2.1 颜色控制2.2.2 文本2.2.3 线段2.2.4 虚线2.2.5 圆弧2.2.6 圆2.2.7 立方体2.2.8 几何体2.2.9 移动、旋转、缩放2.2.10 自由移动 / 旋转 2 Scene 窗口中显示 GUI3 HandleUtility4 G…

Python 将CSV文件转为PDF文件

CSV文件通常用于存储大量的数据&#xff0c;而PDF文件则是一种通用的文档格式&#xff0c;便于与他人共享和打印。将CSV文件转换成PDF文件可以帮助我们更好地管理和展示数据。本文将介绍如何通过Python编程将CSV文件导出为PDF文件。 Python Excel库安装及介绍 在 Python 中&am…

[office] 对Excel工作表中的单元格区域命名以及利用命名定位单元格的方法 #知识分享#学习方法

对Excel工作表中的单元格区域命名以及利用命名定位单元格的方法 为了能方便地找到特定数据所在的单元格&#xff0c;同时也为了在编辑表格时能够方便地实现单元格的引用&#xff0c;以方便使用公式和函数进行计算&#xff0c;用户可以对单元格进行命名。下面介绍对Excel工作表…