我需要测试一个将某些鼠标移动视为“手势”的软件。对于这样的任务,我需要模拟鼠标从 A 点到 B 点的移动,而不是直线移动,而是像真正的鼠标移动 - 带有曲线,有点锯齿状等。是否有任何可用的解决方案(算法/代码本身,不是我可以使用的库/exe)?
当然,我可以自己编写一些简单的正弦数学,但这将是对人手牵着老鼠的非常粗略的模拟。也许这样的任务已经解决了无数次了,我可以借用现有的代码吗?:)
看看Mouse.simba文件,它是SRL 框架的一部分,这是一个宏程序,旨在与Runescape等在线游戏一起使用。Runescape 具有广泛的宏检测功能,因此 SRL 框架的所有部分都已开发为尽可能看起来像人类 - 特别是鼠标功能。
代码在 Pascal 中,但应该很容易阅读。看看MMouse()
BenLand100 的程序,它非常逼真地进行高级运动,如循环和超越目标以及不断变化的加速度和方向(现在也有笔记本电脑触摸板类型的运动)。如果你想测试它,你需要下载SIMBA并启用 SRL-include。
对于未来的任何人:我为 Java 开发了一个库,这正是 OP 所要求的。运动中的噪音/锯齿状、正弦曲线、位置过冲等等。另外,编写库时考虑了扩展和配置的可能性,因此如果默认解决方案与案例不匹配,任何人都可以对其进行微调。现在可以从 Maven Central 获得。
录制一些真实的手势并制作回放它们怎么样?这将与您可以合成的任何东西一样真实,并且可以重复(这对测试很有好处)。
创建一个简单的测试应用程序,它每两秒显示一个随机定位的点。自己跟随圆点并记录您的自然鼠标移动。
捕捉这种行为的一种方法是在屏幕上定义一个不可见的“网格”,您可以在其中跟踪鼠标在其旅程中移动的方格。
如果这部分工作和记录正确,就没有必要用测试来轰炸它,因为你知道每个方格都可以完成它的工作。解释手势也变得更容易。