【Python】使用 selenium模拟敲键盘输入的方法汇总

devtools/2025/1/19 6:53:01/

我在使用selenium弄模拟登陆,需要模拟输入账号和密码,往往都使用 seleniumsend_keys 函数。

可是我昨天在写测试的时候,有时候有些网站,居然使用send_keys 函数,无法在输入框里输入文字!

在Python中,你可以使用多种方式来模拟键盘输入。

以下是一些常见的方法:

selenium_send_keys__9">1. 使用 seleniumsend_keys 函数

这是最基本的方法,适用于需要用户手动输入的情况,不涉及模拟键盘输入。

python">user_input = wait.until(EC.presence_of_element_located((By.XPATH, "/html/")))
user_input.send_keys("密码")

有时候,这个方法对一些网站无效,具体表现在,怎么定位输入键的Xpath都没有效果,无法定位位置,导致无法操作。

这样的话,要么刷新网页,要么使用后面的方法。

2. 使用 pyautogui

在我使用 selenium 传统的的send_keys 函数输入值的方法,发现不太行后,使用js的方法也不行(最后那个方法)。

于是,尝试了一下pyautogui来,模拟鼠标和键盘操作。

在运行前,需要安装 pyautogui

pip install pyautogui

要先找到目标输入的位置:

python">sleep(6) #把鼠标放在目标获取的位置,获取位置信息
current_position = pyautogui.position()
print(f"当前鼠标位置:X={current_position.x}, Y={current_position.y}")

在这里插入图片描述

然后,你可以使用它来模拟键盘输入:

python">import pyautogui# 移动鼠标到一个文本框位置(这里以屏幕上的坐标为例)
pyautogui.click(100, 100) #输入上面返回的xy的位置信息# 输入文本
pyautogui.write('Hello, World!', interval=0.25)

如果是要模拟点击enter键,则是

python"># 模拟按下 Enter 键
pyautogui.press('enter')

到这里就成功啦,只是pyautogui有个不太好的是,它会占用鼠标和键盘的使用,如果我们想要在一边使用selenium运行的时候,也同时使用键盘和鼠标,就会影响或者中断运行的程序,不太方便。

所以如果非必要情况,还是使用xpath/css定位法会更好

3. 使用 pynput

pynput 是另一种可以用于模拟键盘和鼠标事件的库。

首先,安装 pynput

pip install pynput

使用 pynput 模拟键盘输入:

python">from pynput.keyboard import Controller, Keykeyboard = Controller()# 输入文本
keyboard.type('Hello, World!', interval=0.25)# 按下回车键
keyboard.press(Key.enter)
keyboard.release(Key.enter)

4. 使用js输入的操作

python">jsStr = "var d = document.getElementsByClassName('user');d.value='世sdf 言';"
driver.execute_script(jsStr)

但是个人觉得效果不佳hhh


http://www.ppmy.cn/devtools/151763.html

相关文章

【云岚到家】-day03-门户缓存实现实战

【云岚到家】-day03-门户缓存实现实战 1.定时任务更新缓存 1.1 搭建XXL-JOB环境 1.1.1 分布式调度平台XXL-JOB介绍 对于开通区域列表的缓存数据需要由定时任务每天凌晨更新缓存,如何实现定时任务呢? 1.使用jdk提供的Timer定时器 示例代码如下&#xf…

python批量doc转pdf调用提示库未注册

使用的是pywin32工具包! python代码 from win32com.client import Dispatch, constants, gencache, DispatchEx.....gencache.EnsureModule({00020905-0000-0000-C000-000000000046}, 0, 8, 4) 运行报错 pywintypes.com_error: (-2147319779, 库没有注册。, Non…

力扣 完全平方数

动态规划,找到前几个状态做更新。 题目 从题可看出又是一道dp,只要找到一个最大的平方数,然后往回退到上个状态,然后再用回退的状态加回去这个平方数即加上这一种。注意这里的所含平方数并不是随着数字变大而变大的,因…

BEVFusion论文阅读

1. 简介 融合激光雷达和相机的信息已经变成了3D目标检测的一个标准,当前的方法依赖于激光雷达传感器的点云作为查询,以利用图像空间的特征。然而,人们发现,这种基本假设使得当前的融合框架无法在发生 LiDAR 故障时做出任何预测&a…

网络安全面试题及经验分享

本文内容是i春秋论坛面向专业爱好者征集的关于2023年面试题目和答案解析,题目是真实的面试经历分享,具有很高的参考价值。 shiro反序列化漏洞的原理 Shiro反序列化漏洞的原理是攻击者通过精心构造恶意序列化数据,使得在反序列化过程中能够执…

vue3使用vue-native-websocket-vue3通讯

vue3使用vue-native-websocket-vue3通讯 插件使用一、启用Vuex集成1.在mian.js中2.store/index.js文件中3.要websocket使用的页面 二、启用Piain集成1.在mian.js中2.根目录下创建store文件夹,分别创建PiniaType.ts,store.ts,useSocketStore.t…

PCB_Layout零基础学习线路

开始学习做一件事情之前,我们一般先回去了解它的历史,从前人的视角去接近它,让它变得不再陌生。那么问题来了? 1.什么是PCB ? 印刷电路板PCB,真的是天才想法吗?_哔哩哔哩_bilibili 了解了PCB之后我…

2025.1.15——假期回归训练,从sql注入开始|一、SQL整数型注入

第一阶段(2025.1.15-2025.1.27) 题目来源:CTFHub技能树。 “磨刀不误砍柴工” 所有题目的相同步骤:①整理已知信息;②联系相关信息;③用所学知识判断题型;④解题 目录 第一阶段&#xff08…