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

ops/2025/1/21 1:58:11/

我在使用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/ops/151806.html

相关文章

SimpleHelp远程管理软件存在任意文件读取漏洞(CVE-2024-57727)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…

「实战应用」如何为DHTMLX JavaScript 甘特图添加进度线

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。 今天,您将学习如何使用进度线补充JavaScript 甘特图,以便于监控项目进度。 DHTMLX Gantt 最新试用版下载 …

unity2022以上导出到AndroidStudio后更新步骤

1、unity里面Export出unityLibrary 2、导出apk,里面才包含libil2cpp(新版unity无法直接导出libil2cpp 3、注释AS项目app下的build.gradle里面包含unityLibrary的代码 4、注释AS项目settings.gradle包含unityLibrary的代码 5、删除AS项目里面的unityLibrary文件夹 6、…

推理模型专题 | 开源类O1:Marco-o1技术全面解读

引言 简介 Marco推理数据集 通过MCTS扩展解空间 前置知识:蒙特卡罗树搜索(MCTS) MCTS扩展解空间 推理行动策略 行动选择 思考后的反思 实验 设置 主要结果 翻译任务案例研究 总结 0. 引言 小伙伴们好,我是《小窗幽…

【脑机接口数据处理】matlab读取ns6 NS6 ns5NS5格式脑电数据

文章目录 MATLAB函数openNSx详解:轻松读取NSx文件函数概述下载文件基本用法注意事项示例 结论 MATLAB函数openNSx详解:轻松读取NSx文件 在神经科学和生物医学工程领域,处理神经信号数据是一项常见且重要的任务。NSx文件格式是一种用于存储神…

idea 如何安装 github copilot

idea 如何安装 github copilot 要在 IntelliJ IDEA 中安装 GitHub Copilot,可以按照以下步骤操作: 打开 IntelliJ IDEA: 启动 IntelliJ IDEA。 打开插件管理器: 点击菜单栏中的 File。 选择 Settings(Windows/Linux)或 Prefere…

【HeadFirst系列之HeadFirst设计模式】第3天之观察者模式

前言 从今日起,陆续分享《HeadFirst设计模式》的读书笔记,希望能够帮助大家更好的理解设计模式,提高自己的编程能力。 设计模式本质上就是前人比较成熟的经验和智慧。他们遇到过相同的问题,也顺利地解决了这些问题。 跟随前人的脚…

“深入浅出”系列之数通篇:(5)TCP的三次握手和四次挥手

TCP(传输控制协议)的三次握手和四次挥手是TCP连接建立和释放的过程。 一、TCP三次握手 TCP三次握手是为了建立可靠的连接,确保客户端和服务器之间的通信能力。具体过程如下: 第一次握手:客户端向服务器发送一个带有…