51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 6647|回复: 4

SilkTest中DLL的编写及使用

[复制链接]

该用户从未签到

发表于 2009-12-15 09:34:47 | 显示全部楼层 |阅读模式
可以说SilkTest(简称ST)给我们提供了非常强大的测试功能,但有些时候,ST依然无法令我们满意。在ST的自动化测试项目中,我们往往会遇到一些ST本身无法解决的情况,比如ST 不支持像QTP中的HighLight的功能,这给我们在调试脚本的过程中带来了很大的困扰,因为我们有时不清楚到底哪层对象出现了问题,调试起来比较麻烦,如果想解决此问题,我们就必须自己开发DLL来实现HighLight功能。今天主要简单地介绍下如何为ST编写DLL及在ST中的使用。

    首先我们可以用C写一个非常简单的DLL,功能是求2个整型数据的和,代码如下:


    然后我们可以在ST里进行调用


    在ST中,提供了2种DLL扩展语言,C和C++,其中C++的功能更强大,编写更方便,因此可能更多的人会选者用C++来编写自己的 DLL扩展库,但如果直接按照上面C的语法写来写就会出现问题,因为ST会报找不到函数的错误,究其原因,是因为C++在编译的时候,会加一些函数类型等信息,以上面的Add为例,导出来的函数名已不是 Add,而可能是?Add@@INTEGER@@XZ,因此ST就无法找到Add这个函数,要解决此问题,我们必须强制申明DLL函数以C形式进行编译,即在_declspec(dllexport)前加上extern “C”


    有时我们调用返回值是字符串类型函数的时候,发现返回的是乱码,有时我们可以通过在ST中的函数声明前加上ansicall 加以解决, 比如ansicall  string _GetUserName()


    以下是2个常见的在ST中调用DLL的错误:
Error Message: *** Error: DLL cannot be loaded Error 126
解决:DLL文件的路径有问题,不要用相对路径,如果想引用其他变量,必须是常量
Error Message: *** Error: Function SftTree_GetHeader_Col not found in
解决:函数无法找到,检查函数名是否拼写正确,如果是C++编写,记得加上上面提到的extern “c”

    另外提一点,关于对.Net,Java等应用程序的扩展,可以使用record class,它将会更高效,如果能够有开发的支持,那么可以说基本没有无法自动化的东西了,今后有时间,我会另写一文介绍record class。

    最后大家如果有关于DLL方面的想法,欢迎以我讨论,可以留言到www.lantianwei.com, 大家共同进步。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复

使用道具 举报

该用户从未签到

发表于 2011-10-28 16:05:16 | 显示全部楼层
好强大
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2014-10-31 11:32
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2013-6-4 17:43:18 | 显示全部楼层
    现在st中有 highlight这个函数了  直接高亮  "对象.highlight"
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-12-25 08:50:20 | 显示全部楼层
    哪个呦,发这么好的帖子,顶你
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-1-28 11:12:40 | 显示全部楼层
    必须顶!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-29 15:09 , Processed in 0.072415 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表