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

07-操作元素(键盘和鼠标事件)

        在前面的文章中重点介绍了一些元素的定位方法,定位到元素后,就需要操作元素了。本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件。

一、简单操作

  • 点击按钮(鼠标左键):click()
  • 清空输入框:clear()
  • 输入字符串:send_keys('xxx')
  • 获取属性值:get_attribute(attr)
  • 获取标签中的文本内容:text
  • 判断元素是否显示出来:is_displayed()
  • 窗口最大化:driver.maximize_window()
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")print(driver.find_element('xpath', '//*[@id="s-top-left"]/a[2]').text)
driver.find_element("id", "kw").clear()
driver.find_element("id", "kw").send_keys('selenium')
driver.find_element("id", "su").click()
print(driver.find_element("id", "kw").get_attribute("value"))
print(driver.find_element("id", "kw").is_displayed())driver.quit()

二、submit提交表单

        在百度搜索框输入关键字后,可以直接按回车键搜索,也可以点搜索按钮搜索。submit()一般用于模拟回车键。

from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")driver.find_element("id", "kw").clear()
driver.find_element("id", "kw").send_keys('selenium')
driver.find_element("id", "kw").submit()

三、键盘操作

1)模拟键盘enter键

        键盘操作需要先导入如下模块:from selenium.webdriver.common.keys import Keys,然后使用send_keys(Keys.ENTER)模拟enter键。

from selenium import webdriver
from selenium.webdriver.common.keys import Keysdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")driver.find_element("id", "kw").clear()
driver.find_element("id", "kw").send_keys('selenium')
# 模拟键盘enter键
driver.find_element("id", "kw").send_keys(Keys.ENTER)driver.quit()
2)其他常见的键盘操作
  • 键盘F1到F12:send_keys(Keys.F1),把F1改成对应的快捷键。
  • 复制Ctrl+C:send_keys(Keys.CONTROL, 'c') 
  • 粘贴Ctrl+V:send_keys(Keys.CONTROL, 'v') 
  • 全选Ctrl+A:send_keys(Keys.CONTROL, 'a') 
  • 剪切Ctrl+X:send_keys(Keys.CONTROL, 'x') 
  • 制表键Tab:  send_keys(Keys.TAB) 

四、鼠标操作

        鼠标不仅可以点击(click),还可执行其他操作,比如:将鼠标悬停在某个元素上、鼠标右击等。

1)鼠标悬停操作

        鼠标操作需要先导入如下模块:from selenium.webdriver.common.action_chains import ActionChains,然后使用move_to_element()实现鼠标悬停,最后使用perform()执行ActionChains中所有行为。这里以百度页面设置按钮为例。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChainsdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")ele = driver.find_element('xpath', '//*[@id="s-usersetting-top"]')
ActionChains(driver).move_to_element(ele).perform()driver.quit()
2)鼠标其他操作
  • 右击鼠标:context_click()
  • 双击鼠标:double_click()

五、定位悬浮菜单

        通过ajax获取的下拉菜单中的元素对象也可以进行定位,比如百度搜素提示:

from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get('https://www.baidu.com')driver.find_element('id', 'kw').send_keys('py')
time.sleep(1)
# 定位悬浮菜单
menus = driver.find_elements('css selector', '.bdsug-overflow.c-line-clamp1')for i in menus:print(i.text)menus[3].click()

相关文章:

07-操作元素(键盘和鼠标事件)

在前面的文章中重点介绍了一些元素的定位方法,定位到元素后,就需要操作元素了。本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件。 一、简单操作 点击按钮(鼠标左键):click()清空输入框&…...

3389,为了保障3389端口的安全,我们可以采取的措施

3389端口,作为远程桌面协议(RDP)的默认端口,广泛应用于Windows操作系统中,以实现远程管理和控制功能。然而,正因为其广泛使用,3389端口也成为许多潜在安全威胁的入口。因此,确保3389…...

Java集合【超详细】2 -- Map、可变参数、Collections类

文章目录 一、Map集合1.1 Map集合概述和特点【理解】1.2 Map集合的基本功能【应用】1.3 Map集合的获取功能【应用】1.4 Map集合的两种遍历方式 二、HashMap集合2.1 HashMap集合概述和特点【理解】2.2 HashMap的组成、构造函数2.3 put、查找方法2.4 HashMap集合应用案例【应用】…...

最佳 Mac 数据恢复:恢复 Mac 上已删除的文件

尝试过许多 Mac 数据恢复工具,但发现没有一款能达到宣传的效果?我们重点介绍最好的 Mac 数据恢复软件 没有 Mac 用户愿意担心数据丢失,但您永远不知道什么时候会发生这种情况。无论是意外删除 Mac 上的重要文件、不小心弄湿了 Mac、感染病毒…...

芋道系统,springboot+vue3+mysql实现地址的存储与显示

1.效果图 2.前端实现&#xff1a; <el-form-item label"地址" prop"entrepriseAddress"><el-cascaderv-model"formData.entrepriseAddress"size"large":options"region"/></el-form-item> //导入组件 im…...

【C++】C++11新特性:列表初始化、声明、新容器、右值引用、万能引用和完美转发

目录 一、列表初始化 1.1 { } 初始化 1.2 std::initializer_list 二、声明 2.1 auto 2.2 decltype 2.3 nullptr 三、新容器 四、右值引用和移动语义 4.1 左值和左值引用 4.2 右值和右值引用 4.3 左值引用与右值引用比较 4.4 右值引用使用场景和意义&#xff1a;移…...

【IB Protocal Serial--WQE】

IB Protocal Serial--WQE 1 Intro1.1 What1.2 IBA WQE 本系列文章介绍RDMA技术的具体实现–InfiniBand Protocal&#xff1b; Introduce the features, capalities,components, and elements of IBA. the principles of operation. 1 Intro 1.1 What 理解IB协议下面这三句话对…...

C++ 混合运算的类型转换

一 混合运算和隐式转换 257 整型2 浮点5 行吗&#xff1f;成吗&#xff1f;中不中&#xff1f; C 中允许相关的数据类型进行混合运算。 相关类型。 尽管在程序中的数据类型不同&#xff0c;但逻辑上进行这种运算是合理的相关类型在混合运算时会自动进行类型转换&#xff0c;再…...

线性时间选择

给定线性序集中n个元素和一个整数k&#xff0c;1≤k≤n&#xff0c;要求找出这n个元素中第k小的元素 #include<iostream> #include<cstdlib> #include<time.h> using namespace std; int a[100]; int Random(int left,int right) {srand(time(NULL));return …...

【对算法期中卷子的解析和反思】

一、程序阅读并回答问题&#xff08;共30分&#xff09; #include<cstdio>#include<cstring>#include<iostream>using namespace std;char chess[10][10];int sign[10];int n, k, ans;void dfs(int x, int k) { if (k 0){ans;return; } if (xk-1 >…...

sudo apt update sudo: apt: command not found

CentOS或RHEL&#xff08;Red Hat Enterprise Linux&#xff09;系统上&#xff0c;包管理器是yum或dnf&#xff0c;而不是apt。您可以使用yum或dnf来安装软件包。以下是如何在CentOS或RHEL上安装Git的详细步骤&#xff1a; 1. 使用yum安装Git 首先&#xff0c;更新软件包列表&…...

ios:文本框默认的copy、past改成中文复制粘贴

问题 ios 开发&#xff0c;对于输入框的一些默认文案展示&#xff0c;如复制粘贴是英文的&#xff0c;那么如何改为中文的呢 解决 按照路径找到这个文件 ios/项目/Info.plist&#xff0c;增加 <key>CFBundleAllowMixedLocalizations</key> <true/> <…...

Qt moc系统的黑魔法?

Qt的元对象系统&#xff08;Meta-Object System&#xff09;是Qt框架的核心功能之一&#xff0c;为C语言增加了一些动态特性&#xff0c;借助元对象系统Qt可以实现以下功能 信号与槽机制&#xff08;Signals and Slots&#xff09;运行时类型信息&#xff08;Run-Time Type In…...

MyBatis开发中常用总结

文章目录 常用MyBatis参数映射单个参数多个参数使用索引【不推荐】Param注解Map传参POJO【推荐】List数组 动态标签\<if>标签\<trim>标签\<where>标签\<set>标签\<foreach>标签 MyBatis查询一对一一对多 常用MyBatis参数映射 单个参数 XML中可…...

Git基本使用教程(学习记录)

参考文章链接&#xff1a; Git教程&#xff08;超详细&#xff0c;一文秒懂&#xff09; RUNOOB Git教程 Git学习记录 1Git概述 1.1版本控制软件功能 版本管理&#xff1a;更新或回退到历史上任何版本&#xff0c;数据备份共享代码&#xff1a;团队间共享代码&#xff0c;…...

【Linux-RTC】

Linux-RTC ■ rtc_device 结构体■ RTC 时间查看与设置■ 1、时间 RTC 查看■ 2、设置 RTC 时间 ■ rtc_device 结构体 Linux 内核将 RTC 设备抽象为 rtc_device 结构体 rtc_device 结构体&#xff0c;此结构体定义在 include/linux/rtc.h 文件中 ■ RTC 时间查看与设置 ■ 1…...

机器学习目录

文章目录 基本概念有监督学习回归问题分类问题 无监督学习聚类问题异常检测 基本概念 pass 有监督学习 回归问题 通过拟合函数&#xff0c;解决连续值的预测问题梯度下降法优化&#xff1b;最小二乘法求解&#xff1b;度量指标 均方误差&#xff1b;均方根误差&#xff1b;平…...

React开发环境配置详细讲解-04

环境简介 前端随着规范化&#xff0c;可以说规范和环境插件配置满天飞&#xff0c;笔者最早接触的是jquery&#xff0c;那个开发非常简单&#xff0c;只要引入jquery就可以了&#xff0c;当时还写了一套UI框架&#xff0c;至今在做小型项目中还在使用&#xff0c;show一张效果…...

Go 如何通过 Kafka 客户端库 生产与消费消息

文章目录 0.前置说明1. confluent-kafka-go2. sarama3. segmentio/kafka-go4. franz-go选择建议 1.启动 kafka 集群2.安装 confluent-kafka-go 库3.创建生产者特殊文件说明如何查看.log文件内容 4.创建消费者 0.前置说明 Go 语言中有一些流行的 Kafka 客户端库。以下是几个常用…...

【设计模式深度剖析】【B】【结构型】【对比】| 主要区别包装的不同

&#x1f448;️上一篇:享元模式 回 顾&#xff1a;结构型设计模式 1.代理模式&#x1f448;️ 2.装饰器模式&#x1f448;️ 3.适配器模式&#x1f448;️ 4.组合模式&#x1f448;️ 5.桥接模式&#x1f448;️ 6.外观模式&#x1f448;️ 7.享元模式&#x…...

手把手教你用LVGL特殊符号打造炫酷UI界面

手把手教你用LVGL特殊符号打造炫酷UI界面 在嵌入式设备开发中&#xff0c;UI设计往往面临资源受限的挑战。LVGL&#xff08;Light and Versatile Graphics Library&#xff09;作为一款轻量级开源图形库&#xff0c;通过其丰富的特殊符号系统&#xff0c;让开发者能够在有限资…...

【AI+教育】AI总犯“金鱼记忆”?揭秘大模型长期记忆架构,让它真正记住你!

在和AI对话时,你是否有过这样的抓狂时刻:前脚刚告诉它“我叫小明,我不吃香蕉”,五分钟后它又热情地向你推荐香蕉饼? 目前的多数大语言模型就像拥有“金鱼记忆”,一刷新就忘得一干二净。为了让智能体(Agent)能像真正的老朋友一样懂你,我们设计了一套长期记忆功能模块。…...

日志分散难管理?用Visual Syslog Server实现企业级日志集中监控的5个实战方案

日志分散难管理&#xff1f;用Visual Syslog Server实现企业级日志集中监控的5个实战方案 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 痛点诊断&#xff1a;日…...

Undecimus技术解析与实战指南:iOS 11-12.4设备越狱完全攻略

Undecimus技术解析与实战指南&#xff1a;iOS 11-12.4设备越狱完全攻略 【免费下载链接】Undecimus unc0ver jailbreak for iOS 11.0 - 12.4 项目地址: https://gitcode.com/gh_mirrors/un/Undecimus Undecimus作为一款针对iOS 11.0至12.4系统的开源越狱工具&#xff0c…...

3个核心方法实现暗影精灵硬件控制与性能调优:告别原厂软件烦恼

3个核心方法实现暗影精灵硬件控制与性能调优&#xff1a;告别原厂软件烦恼 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 一、痛点解析&#xff1a;原厂游戏控制软件的三大致命伤 1.1 隐私安全隐患&#xff1a;网络连接背…...

x265帧内预测实战:从35种模式到MPM优化的效率提升技巧

x265帧内预测深度优化&#xff1a;从35种模式到MPM的工程实践 在视频编码领域&#xff0c;HEVC标准相比前代H.264引入了更复杂的帧内预测机制&#xff0c;其中x265作为开源编码器实现&#xff0c;其帧内预测模块的优化直接影响编码效率。本文将深入剖析x265帧内预测的核心技术…...

Mojo 1.2正式版发布后,Python互操作API发生3处破坏性变更——紧急迁移指南与向下兼容降级方案(含自动转换脚本)

第一章&#xff1a;Mojo 1.2互操作API破坏性变更全景概览Mojo 1.2 版本对与 Python、C/C 及系统原生库的互操作接口进行了深度重构&#xff0c;核心目标是提升类型安全性和运行时性能&#xff0c;但由此引入了多项不兼容的破坏性变更。开发者在升级至 1.2 时必须审慎评估现有绑…...

Mplus实战:如何用随机截距交叉滞后模型(RI-CLPM)分析心理学纵向数据?

Mplus实战&#xff1a;随机截距交叉滞后模型&#xff08;RI-CLPM&#xff09;在心理学纵向研究中的深度应用 心理学研究中&#xff0c;我们常常需要探索变量间的动态相互作用——比如焦虑和睡眠问题如何相互影响&#xff1f;传统交叉滞后模型&#xff08;CLPM&#xff09;虽然广…...

MoveIt 2 Launch文件进阶:如何用MoveItConfigsBuilder灵活切换规划器(OMPL vs. Pilz)

MoveIt 2规划器切换实战&#xff1a;用MoveItConfigsBuilder实现OMPL与Pilz工业规划器的动态选择 在工业机器人应用开发中&#xff0c;运动规划器的选择往往决定了任务执行的效率和质量。想象一下这样的场景&#xff1a;你的机械臂需要在杂乱环境中快速避障移动时&#xff0c;…...

Gradio项目快速公网演示:除了share=True,你还有这几种轻量级内网穿透方案

Gradio项目快速公网演示&#xff1a;5种轻量级内网穿透方案横向评测 当你开发了一个酷炫的机器学习模型演示&#xff0c;或是精心设计的数据可视化界面&#xff0c;最迫切的需求往往是如何快速分享给同事或客户。Gradio的shareTrue参数可能是大多数开发者首先想到的方案&#x…...