假装不在 发表于 2008-10-7 14:50:59

【QTP编码小知识 三 IE内存释放】

【QTP编码小知识 三 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就可以用了,以后都可以在同个项目中用到,下次有时间和大家说说如何把脚本写得重用性更高些。
   这个主要是使用的是Win32API的方法,用SendMessage的方法去实现了最大化最小化。在这里小编偷偷告诉大家,SendMessage称得上是Win32 API中最强的一个,它几乎可以模拟所有的你想要的操作,至于真的有多强大,你下载小编给你们的文档看看它的所谓参数就知道。
   好了,打开任务管理器,瞧瞧结果,别乐坏了。

[ 本帖最后由 假装不在 于 2008-10-7 14:53 编辑 ]

eve_lincoin 发表于 2008-10-7 14:56:57

顶起

jimods 发表于 2008-10-7 15:22:22

看来是个好东西 下载了 多谢楼主

今天有雾 发表于 2008-10-7 16:05:50

哈哈,找到个好东西,LZ辛苦了

heqingbluesky 发表于 2008-10-7 16:38:16

看了就顶一下。

欧阳 发表于 2008-10-8 09:44:07

:victory: 不错UP

thloong 发表于 2008-10-8 10:38:29

不错是好东西

假装不在 发表于 2008-10-8 20:32:20

这个帖子怎么好像没什么人提出疑问或者辩论之类的。:(

hotray 发表于 2008-10-8 22:20:00

偶想知道原理!!
为什么就一个最小化再最大化就能释放内存呢??:Q

jxjx1003 发表于 2008-10-8 23:15:35

看看,正想学QTP呢~~~

willturner 发表于 2008-10-8 23:45:56

长见识了,LZ能不能稍微简单介绍下原理呢?

假装不在 发表于 2008-10-9 00:38:48

:L 你们好像对附件比正文更感觉....

looligan 发表于 2008-10-9 09:31:26

拿走

:lol :lol :lol :lol :lol :lol :lol :lol :lol

elisly 发表于 2008-10-9 11:06:39

虽然不深入研究,看看无妨。

qwx312347236 发表于 2008-10-9 14:06:16

学习

小孩 发表于 2008-10-10 14:38:16

细心一点你会发现内存的使用总量是没有变化的

假装不在 发表于 2008-10-10 15:30:39

没变化是?

sarahdmj 发表于 2008-10-10 16:16:16

真强!!

heqingbluesky 发表于 2008-10-13 14:29:26

假装不在,

给我一些例子,如何调用API到QTP中,我在这个方面不是很明白,多多指教。:loveliness:

jo_sion 发表于 2008-10-13 14:53:21

2

:)
页: [1] 2
查看完整版本: 【QTP编码小知识 三 IE内存释放】