现在的位置: 首页 > 软件测试 > 测试技术 > 软件测试 > 正文

AutoIT后台监控After Effects弹框报错异常

2017年01月04日 测试技术, 软件测试 ⁄ 共 1243字 ⁄ 字号 暂无评论 ⁄ 阅读 55 次

最近在项目中后台用到After Effects进行视频合成,但由于AE不稳定经常出现报错弹框、进程无响应等异常问题。

后来用了AE的隐藏UI模式,还是有问题,临时就用AutoIT编写了一个小工具处理弹框

思路就是:工具长启在后台监控是否有AE窗口弹出,有的话则激活窗口,截图并发送Enter键进行关闭

代码很简单,但是后来在现网实际使用时,发现由于是远程连接模式使用,远程连接窗口如果最小化或关闭脚本则无法正常运行。

百度了很久之后发现是AutoIT本身的限制导致,暂时无法解决,最后使用了另外一种方法临时规避该问题:

本机A首先连接一个跳转机B,在B上远程访问真正的服务器C,在C上启动小工具,同时远程连接窗口在B桌面常开(可以拖拽缩小,但不能不关闭或最小化)。

代码如下:

#include <ScreenCapture.au3>

MsgBox(48,"Hi,你好","AE弹窗检测程序开始运行!",1)
While 1
	
	Opt("WinTitleMatchMode",3) ;窗口标题匹配模式 1=开头, 2=子串, 3=完全, 4=高级 
	Dim $AE_ERR="After Effects"
	Dim $Script_ERR="Script Alert"
	
	If WinExists($AE_ERR) Then
		;判断截图目录是否存在,若不存在则新建文件夹
		If DirGetSize("ScreenShot\"&@YEAR&@MON&@MDAY) = -1 Then
			DirCreate("ScreenShot\"&@YEAR&@MON&@MDAY)
		EndIf
		;激活AE错误窗口
		WinActivate($AE_ERR)
		Sleep(100)
		;等待AE错误窗口激活
		WinWaitActive($AE_ERR)
		Sleep(100)
		;截图
		_ScreenCapture_Capture("ScreenShot\"&@YEAR&@MON&@MDAY&"\AE_Error_"&@HOUR&@MIN&@SEC&".jpg")
		Sleep(500)
		;发送按键Enter关闭弹窗
		Send("{ENTER}")
		Sleep(1000)
	ElseIf WinExists($Script_ERR) Then
		If DirGetSize("ScreenShot\"&@YEAR&@MON&@MDAY) = -1 Then
			DirCreate("ScreenShot\"&@YEAR&@MON&@MDAY)
		EndIf
		WinActivate($Script_ERR)
		Sleep(100)
		WinWaitActive($Script_ERR)
		Sleep(100)
		_ScreenCapture_Capture("ScreenShot\"&@YEAR&@MON&@MDAY&"\Script_Error_"&@HOUR&@MIN&@SEC&".jpg")
		Sleep(500)
		Send("{ENTER}")
		Sleep(1000)
	Else
		Sleep(1000)
	EndIf
WEnd

给我留言

留言无头像?