【问题标题】:Selenium ActionChains simulated mouse control with Python is 10x slower than simulated keystrokes - why is this, and is there a better way?Selenium ActionChains 用 Python 模拟鼠标控制比模拟击键慢 10 倍 - 为什么会这样,有没有更好的方法?
【发布时间】:2020-01-12 10:55:09
【问题描述】:

我正在通过 Python 构建一个 Selenium ActionChain 来保存和执行键盘和鼠标输入。当 ActionChain 只包含几个击键(通过action.key_down()action.key_up())时,它的执行时间远低于 0.01 秒。只要我添加一个光标移动(使用action.move_by_offset()),执行时间就会达到 0.3-0.4 秒。

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

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

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

【问题讨论】:

标签: python selenium selenium-webdriver


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2013-11-16
    • 2012-02-21
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多