Selenium ActionChains 使用 Python 模拟鼠标控制比模拟击键慢 10 倍 - 为什么会这样,有



我正在通过Python构建一个Selenium ActionChain来保存和执行键盘和鼠标输入。当动作链只包含几个击键(通过action.key_down()action.key_up()(时,它会在0.01秒内执行。一旦我添加单个光标移动(使用 action.move_by_offset()(,执行时间就会飙升至 0.3-0.4 秒。

首先,是什么技术差异使鼠标输入如此昂贵?

有没有更好的基于硒的替代方案,或者我应该使用不同的工具进行实时浏览器输入?

(作为上下文,我正在使用Selenium在HTML5多人网页游戏上运行强化学习模型,因此我需要尽快执行操作,否则我的机器人的反应时间就会受到影响。我正在使用 Firefox 网络驱动程序 - 我也尝试过 Chrome,但发现 geckodriver 的鼠标输入速度大约是其两倍。理想情况下,我需要让所有输入执行在大约 0.01 秒内运行,这样它就不会减慢我的模型速度。

如果有人仍在寻找修复程序,这就是我所做的:

from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver, duration=10)  # duration in milliseconds
actions.move_to_element_with_offset(website_element, x, y).perform()

我通过查看源代码并看到默认值为 250 毫秒的持续时间参数来发现这一点。有谁知道他们为什么这样做?

我不知道你的其他问题的答案

我仍然无法回答为什么这个问题存在于上面的 orde 注释之外,但我确实发现 Selenium 似乎不是最好的工具,并且能够(有点粗略地(使用其他库来解决它。

对于其他有类似需求的人: 我最终使用D3DShot进行视频(比Selenium快得多的帧抓取(,并使用PyAutoGUI进行更快的鼠标控制(接近1毫秒(。我仍然使用Selenium,但只是为了导航到网站,登录,并将游戏窗口全屏显示。

不幸的是,这种设置有效地防止了多个机器人在同一台机器上运行(你也许可以用每个显示器的一个机器人一起破解一些东西,但这会变得非常混乱。

最新更新