用Airtest在Windows上测试PC游戏

简介: 用Airtest在Windows上测试PC游戏

新增的一些指令



之前Airtest已经支持Windows应用程序的测试了,但在涉及到对一些要求DirectInput设备的PC游戏的测试时,之前提供的方法并不能十分有效地模拟键盘和鼠标输入,因此我们提供了新的接口来支持此类PC游戏的测试。


一些PC游戏只接收来自底层硬件层面的发送的键盘扫描码,而不响应例如keyevent()所用的pywinauto库发送的操作系统层面的虚拟键码,所以我们提供了新的接口,key_press(key)key_release(key),来通过发送键盘扫描码进行键盘按键按下和释放的模拟。一些游戏要求在按键按下和释放之间进行一定的操作,因此我们将keyevent(...)拆分成了按下和释放两个步骤,这样做也比传入一个duration参数要更加精确。


因为目前是Windows平台独有的接口,所以指令并没有放在公共API中。在使用时需要先获取设备,再调用方法来模拟对应的键盘操作。


win = device()
win.key_press('W')
... // some operations
win.key_release('W')
复制代码


具体key_press(key)key_release(key)接受的参数key的类型可以在官方Windows平台api文档中查看。



一些3D游戏需要通过控制鼠标的移动来操作镜头,通过对鼠标按钮的点击和释放来进行例如包括射击在内的的一些操作。我们提取了原来swipe(...)touch(...)中的一些逻辑并封装成了三个新的指令,mouse_move(pos)mouse_down(button)mouse_up(button),来模拟鼠标的操作。在一些对镜头移动要求十分严格的游戏中,例如需要鼠标移动来瞄准敌人进行射击,可能需要进行反复的调试或自己提供算法来确定pos这个参数具体的值。


同样,在模拟一些鼠标的操作时,也需要先获取设备再模拟对应的鼠标操作。


import win32api
win = device()
x, y = win32api.GetCursorPos()
win.mouse_move((x+10, y+10))
win.mouse_down('right')
...  // some operations
win.mouse_up('right')
复制代码


一些常见的问题及解决方法



  1. 一些游戏在使用窗口嵌入模式时会出现包括无法框选窗口或者画面消失在内的问题。如果窗口无法框选的话,可以尝试搜索窗口。如果连接窗口以后整个游戏窗口消失的话,可以选择无嵌入模式。如果仍旧无法连接窗口,可以尝试桌面模式。

搜索窗口


无嵌入模式



桌面模式


  1. 因为使用了桌面模式,如果你的脚本当中涉及到图像识别,那很有可能在跑脚本的过程中识别到脚本中的图像,而不是游戏画面当中的图像。此时可以右键单击脚本,选择图片/代码模式切换,将模式转换成代码模式,就能顺利运行脚本了。


  1. 一些PC游戏对光标进行了限制,玩家无法将光标移出游戏画面以外。在编写脚本的时候,可以利用Tab+Alt的方式进行窗口切换。
相关文章
|
1月前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
49 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
2月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
62 2
|
2月前
|
人工智能 测试技术 Windows
Windows 竞技场:面向下一代AI Agent的测试集
【10月更文挑战第25天】随着人工智能的发展,大型语言模型(LLMs)在多模态任务中展现出巨大潜力。为解决传统基准测试的局限性,研究人员提出了Windows Agent Arena,一个在真实Windows操作系统中评估AI代理性能的通用环境。该环境包含150多个多样化任务,支持快速并行化评估。研究团队还推出了多模态代理Navi,在Windows领域测试中成功率达到19.5%。尽管存在局限性,Windows Agent Arena仍为AI代理的评估和研究提供了新机遇。
59 3
|
3月前
|
Web App开发 Windows
Windows 记录一次磁盘相关的PC卡顿问题
【10月更文挑战第26天】本文记录了一次Windows系统中因磁盘问题导致的PC卡顿现象及其解决过程。通过查看任务管理器发现磁盘使用率高,经磁盘碎片整理、优化启动项与后台程序、更新磁盘驱动等步骤,最终解决了卡顿问题。建议定期进行磁盘维护,合理管理启动项,及时更新驱动以预防类似问题。
|
3月前
|
存储 Windows
Windows 记录一次磁盘相关的PC卡顿问题
【10月更文挑战第25天】本文记录了一次 Windows 10 电脑卡顿问题的排查与解决过程。通过资源监视器、事件查看器、SMART 信息检查、磁盘扫描、后台程序排查、驱动更新等步骤,最终通过磁盘碎片整理和调整虚拟内存设置解决了卡顿问题。文章还提供了定期磁盘维护、合理设置虚拟内存及关注硬件健康的预防措施。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试中的人工智能:改变游戏规则的革新
在这篇技术性文章中,我们将深入探讨人工智能(AI)如何彻底改变了软件测试领域。从自动化测试到智能缺陷检测,AI不仅提高了测试的效率和准确性,还为软件开发团队提供了前所未有的洞察力。通过具体案例,本文揭示了AI在软件测试中应用的现状、挑战及未来趋势,强调了技术创新在提升软件质量与开发效率中的关键作用。
|
3月前
|
XML 网络安全 数据格式
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
98 2
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试中的人工智能:改变游戏规则的技术革命
【10月更文挑战第10天】 本文深入探讨了人工智能在软件测试中的应用,揭示了它如何提高测试效率、减少人为错误,并预示了未来软件测试行业的发展趋势。通过案例分析和原理讲解,文章展现了AI技术在自动化测试、缺陷检测和性能评估等方面的巨大潜力。
|
3月前
|
安全 Shell Linux
内网渗透测试基础——Windows PowerShell篇
内网渗透测试基础——Windows PowerShell篇
137 0
|
3月前
|
XML 网络安全 数据格式
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(二)
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(二)
51 0