【IE内存释放】
由于编码小知识出到第三帖,特此帖送出API手册一份,想要会自动化,还离不开Win32 API。
先说下小编对关于 Web内存的一些小看法,之前已经有讨论过关于IE内存占用居高不下,导致了QTP对Web页面的操作出现种种问题。今天和大家说下简单的内存释放方法。首先我们使用的将 浏览器最小化然后再做最大化的操作来实现这个释放工作。很多人知道,IE最小化后,内存占用不到2M,最大化后,会比之前最小化前占的内存更少。
先看下下面的代码,因为QTP中对 Browser没有提供最小化的方法,因此我们需要借助window的中的方法:
hwnd=borwser("...").getroproperty("hwnd")
window("hwnd:="&hwnd).Minimize
wait(1)
window("hwnd:="&hwnd).Maximize
看完小编的这4句代码,很高兴,哇,就这么简单?!慢着,你丢进QTP里面运行看看。打开任务管理器,注意,你可以把wait的 时间调长点,你可以看到,原来内存居然是有增无减?然后愤怒的拿着砖头丢过来。
至于为什么使用了Minimize的方法后仍然无效,这个小编猜想是因为QTP本身并没有真正意义上的最小化。好了,说了哪么多,先来个真的可以做到释放内存的,再看看下面代码:
Public Function QTP_Release_Memory(hwnd)
Extern.Declare micVoid ,"SendMessageA","user32.dll","SendMessageA",micHwnd,micInteger,micInteger,micInteger
SC_MINIMIZE = &HF020&
SC_MAXIMIZE = &HF030&
WM_SYSCOMMAND = &H112
Extern.SendMessageA hwnd,WM_SYSCOMMAND,SC_MINIMIZE,0
wait 1
Extern.SendMessageA hwnd,WM_SYSCOMMAND,SC_MAXIMIZE,0
End Function
大家会问,你怎么要用Function呢,小编这人比较环保,东西能重用就重用,大家只要把窗口的句柄丢给Function就可以用了,以后都可以在同个 项目中用到,下次有时间和大家说说 如何把 脚本写得重用性更高些。
由于编码小知识出到第三帖,特此帖送出API手册一份,想要会自动化,还离不开Win32 API。
先说下小编对关于 Web内存的一些小看法,之前已经有讨论过关于IE内存占用居高不下,导致了QTP对Web页面的操作出现种种问题。今天和大家说下简单的内存释放方法。首先我们使用的将 浏览器最小化然后再做最大化的操作来实现这个释放工作。很多人知道,IE最小化后,内存占用不到2M,最大化后,会比之前最小化前占的内存更少。
先看下下面的代码,因为QTP中对 Browser没有提供最小化的方法,因此我们需要借助window的中的方法:
hwnd=borwser("...").getroproperty("hwnd")
window("hwnd:="&hwnd).Minimize
wait(1)
window("hwnd:="&hwnd).Maximize
看完小编的这4句代码,很高兴,哇,就这么简单?!慢着,你丢进QTP里面运行看看。打开任务管理器,注意,你可以把wait的 时间调长点,你可以看到,原来内存居然是有增无减?然后愤怒的拿着砖头丢过来。
至于为什么使用了Minimize的方法后仍然无效,这个小编猜想是因为QTP本身并没有真正意义上的最小化。好了,说了哪么多,先来个真的可以做到释放内存的,再看看下面代码:
Public Function QTP_Release_Memory(hwnd)
Extern.Declare micVoid ,"SendMessageA","user32.dll","SendMessageA",micHwnd,micInteger,micInteger,micInteger
SC_MINIMIZE = &HF020&
SC_MAXIMIZE = &HF030&
WM_SYSCOMMAND = &H112
Extern.SendMessageA hwnd,WM_SYSCOMMAND,SC_MINIMIZE,0
wait 1
Extern.SendMessageA hwnd,WM_SYSCOMMAND,SC_MAXIMIZE,0
End Function
大家会问,你怎么要用Function呢,小编这人比较环保,东西能重用就重用,大家只要把窗口的句柄丢给Function就可以用了,以后都可以在同个 项目中用到,下次有时间和大家说说 如何把 脚本写得重用性更高些。