由于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. Vuejs中关于computed、methods、watch,mounted的区别

    1.computed是在HTML DOM加载后马上执行的,如赋值: 2.methods则必须要有一定的触发条件才能执行,如点击事件: 3.watch呢?它用于观察Vue实例上的数据变动.对应一个对象, ...

  2. 【学习总结】java数据结构和算法-第一章-内容介绍和授课方式

    总目录链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 几个经典算法面试题 算法和数据结构的重要性 几个经典算法面试题 字符串匹配 暴力法:慢 kmp算法:更 ...

  3. JS-02 一元运算符理解

    <script> var i=1; j=i++ + i++; console.log(j); //结果是3 console.log(i); //结果是3 </script> 代 ...

  4. 浏览器如何减少 reflow/repaint

    1.不要一条一条地修改 DOM 的样式.与其这样,还不如预先定义好 css 的 class,然后修改 DOM 的 className. 2)把 DOM 离线后修改.如: 使用 documentFrag ...

  5. 四 shell基本命令

    一   内置命令 hlep 命令  帮助 help test help -s printf   显示内置命令的语法格式 echo 用来显示一行文字 echo "hello world&quo ...

  6. 前端BFC布局学习

    BFC,全称为(Block formatting context).按照我的理解是我们在某一条件下会触发BFC布局,会产生一定的效果. Block Formatting Contexts翻译为:块级元 ...

  7. vue 生命周期函数详解

    beforeCreate( 创建前 ) 在实例初始化之后,数据观测和事件配置之前被调用,此时组件的选项对象还未创建,el 和 data 并未初始化,因此无法访问methods, data, compu ...

  8. 04 SecurityContextHolder与SecurityContext说明

    该篇记录一下SecurityContextHolder与SecurityContext两个类,当然还有与它们关系密码的SecurityContextPersistenceFilter.java这个过滤 ...

  9. 新增16条设计规约!阿里巴巴Java开发手册(详尽版)开放下载!

    <阿里巴巴Java开发手册>是阿里内部Java工程师所遵循的开发规范,涵盖编程规约.单元测试规约.异常日志规约.MySQL规约.工程规约.安全规约等,这是近万名阿里Java技术精英的经验总 ...

  10. php ucfirst()函数 语法

    php ucfirst()函数 语法 作用:字符串首字母大写 语法:ucfirst(string) 参数: 参数 描述 string 必须,规定要转换的字符串 说明:把字符串中的首字符转换为大写.直线 ...