selenium中键盘操作:Keys类

2023-10-26

一、前言

selenium提供了比较完整的键盘操作,在使用的模拟键盘操作之前需要我们导入Keys类。

from selenium.webdriver.common.keys import Keys

二、常用的非组合键操作

1、回车键:Keys.ENTER
2、删除键:Keys.BACK_SPACE
3、空格键:Keys.SPACE
4、制表键:Keys.TAB
5、回退键:Keys.ESCAPE
6、刷新键:Keys.F5

比如百度搜索中,可以利用Keys.ENTER回车键代替点击搜索框,代码如下:

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
time.sleep(5)
# 定位百度输入框,输入内容
driver.find_element("id","kw").send_keys("学习软件测试")
# 定位百度输入框,输入回车键,以此代替点击搜索按钮
driver.find_element("id","kw").send_keys(Keys.ENTER)
# 初始化ActionChains类,输入回车键,执行回车键操作,和上面一行代码的作用一样
# ActionChains(driver).send_keys(Keys.ENTER).perform()

三、常用的组合键操作

我们经常使用的Ctrl+A,Ctrl+C都是组合键。在使用按键操作的时候我们需要借助一下send_keys()来模拟操作。Keys.CONTROL也就是我们键盘上的Ctrl键,下面是几个常用的组合键

1、全选:send_keys(Keys.CONTROL,'a')
2、复制:send_keys(Keys.CONTROL,'c')
3、粘贴:send_keys(Keys.CONTROL,'v')
4、剪切:send_keys(Keys.CONTROL,'x')

注意:send_keys()有两个参数。

同样已百度为例,借助send_keys()来进行复制粘贴等操作,代码如下:

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
time.sleep(5)

driver.find_element("id", "kw").send_keys("测试工程师")
driver.find_element("id", "kw").send_keys(Keys.CONTROL, 'a')
driver.find_element("id", "kw").send_keys(Keys.CONTROL, 'c')
driver.find_element("id", "kw").send_keys(Keys.CONTROL, 'v')
driver.find_element("id", "kw").send_keys(Keys.CONTROL, 'v')

运行结果图,最终粘贴了两次:

 TODO:还有另一种操作方法,可以利用ActionChains类下面的key_down和key_up方法进行操作,代码如下:

其中:

1、key_down(Keys.CONTROL)  按下Ctrl键

2、send_keys('a') 输入键盘A键

3、key_up(Keys.CONTROL)  在松开Ctrl键

4、perform() 执行之前存储的操作

import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)

driver.get("https://www.baidu.com")
# 定位百度输入框输入内容
driver.find_element('id', 'kw').send_keys("测试工程师")
# 初始化一个ActionChains类
action = ActionChains(driver)
# 选中内容
action.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
time.sleep(3)
# 复制内容
action.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
time.sleep(3)
# 粘贴内容
action.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
action.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

selenium中键盘操作:Keys类 的相关文章

  • 比较 TCP 校验和与 Scapy?

    我试图在使用 Scapy 作为嗅探器时识别校验和不正确的数据包 我可以通过访问获得原始校验和 packet TCP chksum 然后我使用删除它 del packet TCP chksum 我想做类似的事情 if originalChec
  • 通过pip安装lxml时出错:需要Microsoft Visual C++ 14.0

    我使用的是 Windows 10 机器 最近从 python 2 7 迁移到 3 5 当尝试通过 pip 安装 lxml 时 它会停止并抛出此错误消息 构建 lxml etree 扩展错误 需要 Microsoft Visual C 14
  • 在Python子目录中创建文件?

    在我的 Python 脚本中 我需要在子目录中创建一个新文件而不更改目录 并且需要从当前目录不断编辑该文件 My code os mkdir datetime dst for ip in open list txt with open ip
  • SQLAlchemy 闭包表关系定义

    我最近开始使用 SQL Alchemy 开展一个涉及攀岩区域和路线的项目 区域是分层的 因为单个区域可以包含多个区域 而多个区域又可以包含其他区域 路线直接与单个区域关联 但也与该区域的父区域关联 等等 为了实现这一点 我选择使用Bill
  • pandas 用 nan 值切割了一系列

    我想将 pandas cut 函数应用于包含 NaN 的序列 期望的行为是它对非 NaN 元素进行存储并为 NaN 元素返回 NaN import pandas as pd numbers with nan pd Series 3 1 2
  • 如何使用Python3将ruamel.yaml转换为dict?

    我想要一个dict or OrderedDict from ruamel yaml 我正在使用 Python 3 8 如果有帮助的话 很乐意切换到 3 9 from ruamel yaml import YAML from collecti
  • 将 unique_ptr 与 boost python 结合使用 - boost::shared_ptr 有效,但 unique_ptr 无效

    这可能与以下问题相同 Boost Python 没有 to python for std unique ptr https stackoverflow com questions 20590205 boost python no to py
  • 登录 python + mod_wsgi 应用程序

    我在 apache 服务器上部署了一个 python Flask 应用程序 这是我的abc conf file WSGIDaemonProcess voting app threads 5 WSGIScriptAlias election
  • 在 matplotlib 中查看然后自动关闭图形?

    我必须检查我的参数设置是否正确 因此我需要绘制许多图 为了绘制这些图 我选择使用 matplotlib 每次检查后 我需要单击左上角的关闭按钮 这很微不足道 那么有没有什么方法可以让剧情在3 5秒左右显示并且无需点击就自动关闭呢 我知道关于
  • Django 1.7.1 需要字段的默认值 - 但数据库中没有条目。为什么?

    我遇到了一个奇怪的问题 我在 Mac OS X Yosemite 上使用 Django 1 7 1 并且配置了本地 MySQL 数据库 通常 我创建一个模型 如果我想添加另一个字段 我只需做一个 manage py migrateDjang
  • 如何在 Django 中创建多选框?

    我正在尝试创建多选框字段来自姜戈选择 2 https github com applegrew django select2库如下图所示 我使用了下一个代码 但它返回简单的选择多个小部件 我想我忘了补充一些东西 我的错误在哪里 有人可以告诉
  • 如何在这个可嵌套的 For 循环中实现 Robot Framework 风格的变量?

    我在 Robot Framework 中见过很多 嵌套 For 循环 主要是创建一个内部带有 For 循环的关键字 然后在另一个 For 循环中调用该关键字 我使用 Python 2 7 13 制作了一个可嵌套的 For 循环 但因为它主要
  • 将 csv 写入谷歌云存储

    我试图了解如何将多行 csv 文件写入谷歌云存储 我只是没有遵循文档 https googlecloudplatform github io google cloud python stable storage blobs html hig
  • 单个函数的 Numpy 均值和方差?

    使用 Numpy Python 是否可以从单个函数调用返回均值 AND 方差 我知道我可以单独做它们 但是计算样本标准差需要平均值 因此 如果我使用单独的函数来获取均值和方差 则会增加不必要的开销 我尝试在这里查看 numpy 文档 htt
  • 当前异常上下文掩盖了先前的错误

    以下是我在 Doug Hellman 网站上名为 masking exceptions catch py 的文件中找到的示例 我暂时无法找到链接 throws 中引发的异常将被丢弃 而 cleanup 中引发的异常将被报告 道格在他的文章中
  • 如何在 Python Paramiko 中配置 ssh StrictHostKeyChecking=no 的等效项

    我正在使用 Paramiko 通过 Python 脚本进行 sshing 我的ssh命令如下 ssh A o strictHostKeyChecking no
  • 使用 PyODBC 选择表中的列名

    我正在编写一个 Python 程序 该程序使用 PyODBC 从 Microsoft Access mdb 文件中选择一些数据 我需要发现几个不同表的列名 在 SQL Server 中 这可以通过使用类似的查询来完成 SELECT c na
  • 设置restrict_xpaths设置后出现UnicodeEncodeError

    我是 python 和 scrapy 的新手 将restrict xpaths 设置设置为 table class lista 后 我收到了以下回溯 奇怪的是 通过使用其他 xpath 规则 爬虫可以正常工作 Traceback most
  • Django migrate:不创建表

    经过一些错误后 我删除了数据库 删除了所有迁移文件 我留下了init py 现在 当我跑步时 python migrate py makemigrations It creates migrations correctly python m
  • 将 sudo 与 Python 脚本结合使用

    我正在尝试编写一个小脚本来在每次执行脚本时安装 VirtualBox 共享文件夹 我想用Python 来做这件事 因为我正在尝试学习它来编写脚本 问题是我需要特权才能启动挂载命令 我可以将脚本作为 sudo 运行 但我更喜欢它自己创建 su

随机推荐

  • SD秋叶安装教程

    前言 本部署整合包基于开源项目 stable diffusion webui制作 部署包作者 秋葉aaaki 免责声明 本安装包及启动器免费提供 无任何盈利目的 电脑配置要求 操作系统 windows10以后 CPU 不做强制要求 内存 推
  • 输出斐波那契数列的每一项,每五个换行

    7 2 利用数组计算斐波那契数列 15 分 本题要求编写程序 利用数组计算菲波那契 Fibonacci 数列的前N项 每行输出5个 题目保证计算结果在长整型范围内 Fibonacci数列就是满足任一项数字是前两项的和 最开始两项均定义为1
  • FFmpeg录制流

    FFmpeg下windows安装 下载地址 http ffmpeg org download html windows 下载 ffmpeg release essentials zip 这个文件名 解压后将bin目录加到环境变量path 录
  • 内存使用(分段、分区、分页、多级页表、快表)--OS

    内存使用 内存使用 将程序放在内存中 PC指向内存地址 首先 我们需要让程序进入内存 举个例子 int main int argc char argv text entry 入口地址 call main call exit main ret
  • windows默认文件(桌面、下载、文档等)设置为C盘根路径后怎么修改回去

    桌面 下载 文档等设置为C盘根路径后怎么修改回去 1 问题 2 解决办法 2 1 按 Win R 调出运行窗口 输入 regedit 并按回车 2 2 在弹出的注册表窗口里 打开下面路径 计算机 HKEY CURRENT USER SOFT
  • 数据结构——迪杰斯特拉(Dijkstra)算法

    迪杰斯特拉算法又叫狄克斯特拉算法 是从一个顶点到其余各顶点的最短路径算法 解决的是有权图中最短路径问题 迪杰斯特拉算法主要特点是从起始点开始 采用贪心算法的策略 每次遍历到始点距离最近且未访问过的顶点的邻接节点 直到扩展到终点为止 以下是数
  • 【Golang】切片(slice)

    文章目录 切片 直接声明新的切片 append 函数为切片添加元素 复制切到另一个切片 从切片中删除元素 从开头位置删除 从中间位置删除 从尾部删除 切片 切片 slice 是对数组的一个连续片段的引用 所以切片是一个引用类型 这个片段可以
  • scss 转为 less

    tnpm install less plugin sass2less g sass2less scss dir name less rm rf scss 转载于 https www cnblogs com lyraLee p 1048966
  • virtualbox的虚拟机联不通外网的问题

    问题描述 在网卡配置上按照网上的操作配置好了 但是仍然联不通外网 ip地址显示为127 0 0 1 解决 通过输入dhclient v命令解决
  • Spring框架常用注解及通配符总结

    Autowired 自动注入 默认是类型匹配 使用配置文件需要set 使用注解不需要 只需要类属性 Autowired可以和 Qualifier beanName 配合着使用 Qualifier beanName 多个相同类型的bean 标
  • 基于深度学习的目标检测方法综述

    引言 现有的深度学习的目标检测方法 可以大致分为两类 一 基于候选区域的目标检测方法 二 基于回归的目标检测方法 依据方法的提出时间 可以构建出如下时间线 2014 CVPR R CNN 1 2015 arXiv DenseBox 14 2
  • 「开源项目」现代化开源Linux服务器运维管理面板-1Panel

    1Panel 基本介绍 1Panel 是新一代的 Linux 服务器运维管理面板 产品优势 快速建站 深度集成 Wordpress 和 Halo 域名绑定 SSL 证书配置等一键搞定 高效管理 通过 Web 端轻松管理 Linux 服务器
  • arm汇编中感叹号/叹号的作用

    arm汇编中存在一个神奇的可选后缀 一般是在寄存器或寻址方式之后 对于加了叹号的情况 访问内存时先根据寻址方式更改寄存器的值 再按照该已经更新的值访问内存
  • 基于深度学习的目标检测算法概述

    摘要 目标检测是计算机视觉的一个重要分支 其目的是准确判断图像或视频中的物体类别并定位 传统的目标检测方法包括这三个步骤 区域选择 提取特征和分类回归 这样的检测方法存在很多问题 现已难以满足检测对性能和速度的要求 基于深度学习的目标检测方
  • 电子元器件/模块供应商汇总

    晶振 WIFI MLCC电容
  • Python制作模拟按键摘录,pyautogui库及该库在某些窗口不生效的问题部分解决措施(PyDirectInput库、winio驱动级模拟)

    文章目录 toc 一 使用pyautogui库 1 安装pyautogui库 2 导入并在py中使用 1 导包 2 基本鼠标控制 3 基本键盘控制 4 屏幕截图 5 图片位置识别 3 存在问题 二 使用PyDirectInput库解决某些游
  • 机器学习——数据清洗,特征选择

    数据清洗的方法 设置阈值去掉异常值 随机森林预测去掉点的数值加进去 onehot编码 不适用于决策树和随机森林 先将一个属性分成几个类别 然后再将样本的数据变成矩阵01 1表示其所在类别 会导致特征数增多 数据清洗代码实现 import n
  • Linux磁盘扩容详解

    公司项目服务器是买的阿里的 原来的项目是外包出去别人做的 用户图片上传保存到了服务器上 500G的磁盘空间硬生生给用完了 怎么搞 扩容呗 大概思路就是从阿里那再买一块磁盘 添加到ESC实例上 然后挂载 然后格式化磁盘文件 然后把老图片mv过
  • STL sort排序算法详细介绍

    用于C 中 对给定区间所有元素进行排序 头文件是 include
  • selenium中键盘操作:Keys类

    一 前言 selenium提供了比较完整的键盘操作 在使用的模拟键盘操作之前需要我们导入Keys类 from selenium webdriver common keys import Keys 二 常用的非组合键操作 1 回车键 Keys