QTP加载第三方DLL(C#)实现清除IE缓存(转)

由于QTP的默认编程语言是VBS, 而VBS是一种相对来说功能比较局限的脚本语言,因此我们在编写自动化测试脚本时会有很多功能无法很好的实现。 相对来说c#是一种高级编程语言, 可以实现大多数windows环境下的功能。 所以我们可以借助C#来实现在VBS下无法实现或者实现起来麻烦的功能。

本篇文章以清除IE缓存为例, 介绍QTP如何与.Net framework集成。

1, 创建c# dll.

在Visual studio 中新建项目, 选择Class library. 命名为: Automation

2, 在项目中新建一个类, 命名为:BrowserManager , 在这个类中定义了2个方法分别实现清理IE cache和cookie 。以下是具体代码:

[csharp] view plaincopyprint?

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Diagnostics;
  7. namespace Automation
  8. {
  9. public class BrowserManager
  10. {
  11. /*
  12. Temporary Internet Files  (Internet临时文件)
  13. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
  14. Cookies
  15. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2
  16. History (历史记录)
  17. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
  18. Form. Data (表单数据)
  19. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16
  20. Passwords (密码)
  21. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32
  22. Delete All  (全部删除)
  23. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255
  24. Delete All - "Also delete files and settings stored by add-ons"
  25. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351
  26. */
  27. public void ClearIECookie()
  28. {
  29. Process process = new Process();
  30. process.StartInfo.FileName = "RunDll32.exe";
  31. process.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 2";
  32. process.StartInfo.UseShellExecute = false;
  33. process.StartInfo.RedirectStandardInput = true;
  34. process.StartInfo.RedirectStandardOutput = true;
  35. process.StartInfo.RedirectStandardError = true;
  36. process.StartInfo.CreateNoWindow = true;
  37. process.Start();
  38. process.WaitForExit();
  39. }
  40. public void ClearIECache()
  41. {
  42. Process process = new Process();
  43. process.StartInfo.FileName = "RunDll32.exe";
  44. process.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 8";
  45. process.StartInfo.UseShellExecute = false;
  46. process.StartInfo.RedirectStandardInput = true;
  47. process.StartInfo.RedirectStandardOutput = true;
  48. process.StartInfo.RedirectStandardError = true;
  49. process.StartInfo.CreateNoWindow = true;
  50. process.Start();
  51. process.WaitForExit();
  52. }
  53. }
  54. }

3, 将类通过编译, 并在项目工程文件夹 bin\debug目录下找到Automation.dll. 将这个文件复制到你想要存放的目录下。 例如c:\automation.dll

4, 打开QTP,实现调用:

[vb] view plaincopyprint?

    1. Function CleanIE_Cache_and_Cookie
    2. Dim BrowserManager
    3. set BrowserManager = Dotnetfactory.CreateInstance("Automation.BrowserManager","c:\Automation.dll")
    4. BrowserManager.ClearIECache()
    5. BrowserManager.ClearIECookie()
    6. Set BrowserManager = nothing
    7. End Function
时间: 2024-10-15 12:57:16

QTP加载第三方DLL(C#)实现清除IE缓存(转)的相关文章

c# 无法加载xxx.dll 找不到指定的模块(如何指定文件夹)

如果直接放在项目运行目录,例如bin/debug可以直接加载,但是这样比较乱. 如果在放debug里面的一个文件夹里面,有可能会报错“无法加载xxx.dll 找不到指定的模块”. 如果路径写成这样就会报错 framework/linphone 解决方法:将/ 改成"\" framework\linphone

VS2013编译经常卡在正在从以下位置加载xxx.dll的符号

换了系统后,重新下载了一个vs2013 with update2安装,编译的时候总是卡在 正在从以下位置加载xxx.dll的符号 如图: 解决方法: 进入VS---工具---选项----调试----符号 看右边有个“Microsoft符号服务器”,将前面的勾去掉, (可能还有删除下面的那个缓存). 然后就不会在调试时加载了! 问题得到解决

加载php_curl.dll和php_openssl.dll出错原因及解决办法

今天在XP下安装PHP开发环境时,需要加载php_curl.dll这个动态库,自己想当然的在php.ini里把extension=php_curl.dll打开以为就可以了.可以在apache的logs里面依然会报错,提示找不到php_curl.dll这个文件,我的extension_dir也配置php/ext这个目录下面,而且ext这个目录下面也有php_curl.dll这个文件,为什么找不到呢,着实让人挺纳闷的. 网上的资料都是说extension_dir的路径没有配置或是没有打开extens

c#动态加载卸载DLL的方法

这篇文章介绍了c#动态加载卸载DLL的方法,有需要的朋友可以参考一下 c#中通过反射可以方便的动态加载dll程序集,但是如果你需要对dll进行更新,却发现.net类库没有提供卸载dll程序集的方法.在.net 中,加入了应用程序域的概念,应用程序域是可以卸载的.也就是说,如果需要对动态加载的dll程序集进行更新,可以通过以下方法解决: 新建一个应用程序域,在该应用程序域中动态加载DLL,然后可以卸载掉该应用程序域.该应用程序域被卸载的时候,相关资源也会被回收. 要想这样实现,就要让你程序的cur

win8和win7下解决php5.3和5.4、5.5等不能加载php_curl.dll的终极解决办法 收藏

win8和win7下解决php5.3和5.4.5.5等不能加载php_curl.dll的终极解决办法 收藏2015年01月11日 最近分别在WIN7和Windows8 上分别安装php 高版本!都遇到了这个问题! 一.win7系统32位, apache2.2, php5.2升级到5.4. 这个比较容易: 1. phpinfo发现没有加载curl; 2. 在php.ini中设置extension_dir 指向e:\php5.4\ext; 部分php扩展加载了, 但curl仍不行. 3. 设置win

顺利解决asp.net无法加载oci.dll

我今天碰到asp.net无法加载oci.dll的错误 提示错误:oci.dll was loaded,but the DLLRegisterServer entry point was not found. 然后试了试CODEGO.NET上的这个方法:把oraclient8.dll,orasql9.dll,oci.dll拷贝到System32解决问题. 代码是这样的: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI] "OracleXaLi

64位oracle数据库用32位plsql developer无法连接问题(无法加载oci.dll)

在64位操作系统下安装oracle数据库,新下载了64位数据库(如果是32位数据库安装在64位的操作系统上,不管是客户端还是服务器端,都不要去选择C:\Program Files (x86)这个路径,而是要修改安装路径将(x86)去掉).一路安装,没有问题,后面安装完成plsql develop,提示32位的客户端无法加载oci.dll文件. 因为要想使用plsql developer,必须是在本地安装了oracle的客户端,否则是无法使用的,所以,问题大概是安装oracle数据库的时候,客户端

tp5 加载第三方扩展类库与手动加载的问题

=============================================================== <?phpnamespace my; /*** 加载第三方类库*/ class Test{ public function sayHello(){ return 'hello'; }} ?> ---------------------------------- var_dump(  (new \my\Test())->sayHello()   ); ======

ArcGIS JS 4加载第三方矢量切片

????现在矢量切片越来越普及,对于地图渲染能更轻更快.ArcGIS JS 4.13可以实现加载第三方矢量切片,以下为代码示例,最下方是我之前切的建筑物数据. ????当切片大小在1M左右,加载效果还是可以.不过跟mapbox gl相比还是有些逊色,mapbox gl可以加载6M大小的切片,但ArcGIS JS 4却不行.矢量切片还是需要控制好大小,这样才能快速传输和渲染. var style = { "version": 8, "sources": { "