由于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. thinkphp开发微信小程序后台流程

    thinkphp开发微信小程序后台流程,简单分享一下微信开发流程 1,注册微信小程序账号 2,注册好后,登陆微信小程序,下载微信小程序开发工具 3,用thinkphp开发企业后台,前台数据用json返 ...

  2. P3452 [POI2007]BIU-Offices(链表+bfs)

    P3452 [POI2007]BIU-Offices 新姿势:链表存图快速删除 显然两个没有直接相连的点要放到同一个集合里 但是直接搞一个图的补图会挂掉 考虑用链表维护点序列 每次bfs删除一个点和与 ...

  3. bzoj3218 a + b Problem(网络流+主席树)

    $ans=\sum_{color_i=black}\ b_i+\sum_{color_i=white}\ w_i-\sum_{i=abnormal}\ p_i$ 把它转化一下 $ans=\sum_{i ...

  4. axios 利用new FileReader() 下载文件获取返回的错误信息

    this.axios({           method: "post",           url: url,           data: data,           ...

  5. unity DOTween Pro的使用--简化流程--自动播放

    当gameobject setActive(true)的时候自动播放动画 1) 添加DoTween Animation. 设置动画效果, 略 选中 AutoPlay, 取消 AutoKill 2) 在 ...

  6. gvfs错误导致tilda和thunar启动缓慢问题的解决

    tilda是一个非常轻便的下拉终端,但是安装之后启动发现要过十几秒才会出现界面.命令行启动发现报错如下: 用这条信息到处搜索也找不到有用的解答. 后来终于发现这是一个dbus超时的问题,虽然原因和这个 ...

  7. Codeforces Round #393 (Div. 2) - A

    题目链接:http://codeforces.com/contest/760/problem/A 题意:给定一个2017年的月份和该月的第一天的星期,问该月份的日历表中需要多少列.行有7列表示星期一~ ...

  8. vue中v-model详解

    vue中经常使用到<input>和<textarea>这类表单元素,vue对于这些元素的数据绑定和我们以前经常用的jQuery有些区别.vue使用v-model实现这些标签数据 ...

  9. yield关键字详解与三种用法

    本篇文章比较硬核, 适合有一定Python基础的读者阅读, 如果您对Python还不甚了解可以先关注我哦, 我会持续更新Python技术文章 yield详解 yield与return相同每次调用都会返 ...

  10. idea将本地项目推送到git远程库

    如何将本地项目推送到github远程仓库? 1. 在github上创建一个仓库,取名mybatis 2. 在idea中将项目交由git管理 注意,文件名会变红了, 说明这些文件在git工作区,但还没规 ...