由于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 。以下是具体代码:

  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,实现调用:

    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

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

  1. fluent加载第三方(C++,Fortan等)动态链接库

    这里我介绍一种比较简单的方法,首先我们从ANSYS Fluent UDF Manual上随便找一段正确的UDF,下面这段UDF取自ANSYS 18的ANSYS Fluent UDF Manual,位于 ...

  2. 应用SqlGeometry无法加载sqlserverspatial.dll

    最近需要完成一个API,通过用户上传的经纬度判断用户的所在县市省,数据量相对不是很大所以把相关数据全部扔到了内存里知行,主要用到了SqlGeometry, 代码写完后运行本地没问题,扔到服务器上开始报 ...

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

    这篇文章介绍了c#动态加载卸载DLL的方法,有需要的朋友可以参考一下 c#中通过反射可以方便的动态加载dll程序集,但是如果你需要对dll进行更新,却发现.net类库没有提供卸载dll程序集的方法.在 ...

  4. C# 加载 SQLite DLL问题

    /********************************************************************************* * C# 加载 SQLite DL ...

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

    换了系统后,重新下载了一个vs2013 with update2安装,编译的时候总是卡在 正在从以下位置加载xxx.dll的符号 如图: 解决方法: 进入VS---工具---选项----调试----符 ...

  6. 如何解决加载动态链接库DLL失败,返回0,GetLastError返回错误码126

    通常情况下使用LoadLibrary加载DLL都可以成功,但是当被加载的DLL内部依赖其他DLL无法被找到时,该函数会返回126(ERROR_MOD_NOT_FOUND)错误. 解决办法有2种: 1) ...

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

    今天在XP下安装PHP开发环境时,需要加载php_curl.dll这个动态库,自己想当然的在php.ini里把extension=php_curl.dll打开以为就可以了.可以在apache的logs ...

  8. C# 动态加载卸载 DLL

    我最近做的软件,需要检测dll或exe是否混淆,需要反射获得类名,这时发现,C#可以加载DLL,但不能卸载DLL.于是在网上找到一个方法,可以动态加载DLL,不使用时可以卸载. 我在写一个WPF 程序 ...

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

    =============================================================== <?phpnamespace my; /*** 加载第三方类库*/ ...

随机推荐

  1. Zookeeper---作为服务注册中心

    认识Zookeeper是一套分布式协调服务. 优点: 简单:与文件系统类似,Znode的组织方式. 多副本:一般再线上都是三副本或者五副本的形式,最少会有三个节点. 有序:有序的操作,根据时间戳进行排 ...

  2. POJ1742 coins 动态规划之多重部分和问题

    原题链接:http://poj.org/problem?id=1742 题目大意:tony现在有n种硬币,第i种硬币的面值为A[i],数量为C[i].现在tony要使用这些硬币去买一块价格不超过m的表 ...

  3. 洛谷 P1589 泥泞路 & 2019青岛市竞赛(贪心)

    题目链接 https://www.luogu.org/problemnew/show/P1589 解题思路 用结构体存下每一段泥泞路的左端点和右端点,然后用sort根据左端点排序,采用贪心的思想,从左 ...

  4. 从0构建webpack开发环境(三) 开发环境以及 webpack-dev-server 的使用

    sourceMap 实际应用开发过程中大部分时间都是处于开发模式中,其中需要频繁的修改代码.调试和打包. 但是打包后的代码多个模块压缩到了一个bundle文件,如果出现警告或者异常很难定位到具体模块和 ...

  5. java截取某个字符之前或者之后的字符串

    String str = lly://enterVideoList?result={jsonString}; 截取?之前字符串 String str1=str.substring(0, str.ind ...

  6. simple_pt时遇到的问题

    elf.c:30:18: fatal error: gelf.h: No such file or directory 安装libelf-dev 遇到找不到ldwarf apt-cache  sear ...

  7. python常用函数 J

    (1)join(iterable)/(2) join(str, str) (1)join()连接字符串数组.(2)os.path.join()将多个路径组合后返回. 例子:

  8. 商城分类导航实现 (css)

    代码实例:demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  9. Python 把字符串变成浮点数

    from functools import reducedi = {}di.update(zip('1234567890.', [1,2,3,4,5,6,7,8,9,0,'.'])) def str2 ...

  10. Linux命令行工具之free命令

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11524691.html 使用 free 查看整个系统的内存使用情况 Note:不同版本的free输出可 ...