由于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. [Codeforces 364D]Ghd(随机算法+gcd)

    [Codeforces 364D]Ghd(随机算法) 题面 给出n个正整数,在其中选出n/2(向上取整)个数,要求这些数的最大公约数最大,求最大公约数的最大值 分析 每个数被选到的概率\(\geq \ ...

  2. Codeforces - 1194E - Count The Rectangles - 扫描线

    https://codeforc.es/contest/1194/problem/E 给5000条正常的(同方向不会重叠,也不会退化成点的)线段,他们都是平行坐标轴方向的,求能组成多少个矩形. 先进行 ...

  3. 状压BFS

    ​题意:1个机器人找几个垃圾,求出最短路径. 状压BFS,这道题不能用普通BFS二维vis标记数组去标记走过的路径,因为这题是可以往回走的,而且你也不能只记录垃圾的数量就可以了,因为它有可能重复走同一 ...

  4. Dedecms织梦后台登陆验证码不显示几种解决方法

    Dedecms织梦后台登陆验证码不显示几种解决方法,服务器所造成的验证码不显示问题看这里: 方法一:查看服务器的php版本是否与程序版本兼容(织梦程序PHP版本查看方法:打开www.96net.com ...

  5. JavaScript设计模式-组合模式(表单应用实现)

    书读百遍其义自见 <JavaScript设计模式>一书组合模式在表单中应用,我问你答答案. 注:小编自己根据书中的栗子码的答案,如有错误,请留言斧正. 另:如有转载请注明出处,谢谢啦 &l ...

  6. UIWindow,UINavigationController,UIViewController

  7. ubuntu vim8.1编译安装

    sudo apt-get install libncurses5-dev python-dev python3-dev libgtk-3-dev libatk1.0-dev libbonoboui2- ...

  8. PhpStorm中如何使用database工具

    环境:ubuntu18.4 mysql5.7 一. 打开database 1.选择View—>Tool Windows—>Database单击打开. 2.新增数据连接 选择 “+”—> ...

  9. 机器学习:1.K近邻算法

    1.简单案例:预测男女,根据身高,体重,鞋码 import numpy as np import matplotlib import sklearn from skleran.neighbors im ...

  10. webpack.config.js配置入口出口文件

    目录结构: 新建webpack.config.js配置文件 const path = require('path') //导出 path是node内置的包 通过npm init初始化得到package ...