致力于软件自动化测试的研究和探索
SilkTest中DLL的编写及使用
上一篇 /
下一篇 2009-12-15 09:35:00 / 天气: 晴朗
/ 心情: 平静
/ 个人分类:蓝天测试
查看( 650 ) /
评论( 4 )
可以说
SilkTest(简称ST)给我们提供了非常强大的
测试功能,但有些时候,ST依然无法令我们满意。在ST的
自动化测试项目中,我们往往会遇到一些ST本身无法解决的情况,比如ST 不支持像
QTP中的HighLight的功能,这给我们在调试脚本的过程中带来了很大的困扰,因为我们有时不清楚到底哪层对象出现了问题,调试起来比较麻烦,如果想解决此问题,我们就必须自己开发
DLL来实现HighLight功能。今天主要简单地介绍下如何为ST编写DLL及在ST中的使用。
51Testing软件测试网8Og7l vLE'[l|
\?A%B_%m%F8O?s1J0 首先我们可以用C写一个非常简单的DLL,功能是求2个整型数据的和,代码如下:
51Testing软件测试网B:h+s?!d|
U-as51Testing软件测试网t^F}FC'?s
/O)Jmtyk3_0add.jpg3C+K&Mq.G051Testing软件测试网
D:m9h2[s?l9t k 然后我们可以在ST里进行调用
1i,L[k:W _Q0S$u0F'czG"f0
9x/P$t,WRu0calladd.jpg51Testing软件测试网 ?:~ EYmb'^}Cq%Z)lKC(h^0 在ST中,提供了2种DLL扩展语言,C和C++,其中C++的功能更强大,编写更方便,因此可能更多的人会选者用C++来编写自己的 DLL扩展库,但如果直接按照上面C的语法写来写就会出现问题,因为ST会报找不到函数的错误,究其原因,是因为C++在编译的时候,会加一些函数类型等信息,以上面的Add为例,导出来的函数名已不是 Add,而可能是?Add@@INTEGER@@XZ,因此ST就无法找到Add这个函数,要解决此问题,我们必须强制申明DLL函数以C形式进行编译,即在_declspec(dllexport)前加上
extern “C”51Testing软件测试网ao8Jl_3u$s}N?
w:f`UOtK0T051Testing软件测试网!tj+pg:o;r-Xo
externc.jpg;Oiq!Wd,v0uS{3Q3_xB;C0 有时我们调用返回值是字符串类型函数的时候,发现返回的是乱码,有时我们可以通过在ST中的函数声明前加上
ansicall加以解决, 比如ansicall string _GetUserName()
51Testing软件测试网)mc |&yBu~HvjU1ak0
Ug&A\5qM"p X0ansicall.jpg0k7h-|N2f ]0
]iH4@
L1u"j0 以下是2个常见的在ST中调用DLL的错误:
51Testing软件测试网5DWCg:I9@Error Message: *** Error: DLL cannot be loaded Error 126:E7HuN(fHm4S.v0解决:DLL文件的路径有问题,不要用相对路径,如果想引用
其他变量,必须是常量
51Testing软件测试网V_
x
zt1j4Co`Error Message: *** Error: Function SftTree_GetHeader_Col not found in51Testing软件测试网VzF wh:g1B7Y解决:函数无法找到,检查函数名是否拼写正确,如果是C++编写,记得加上上面提到的extern “c”
51Testing软件测试网6_ el)gZ
?8g
mFZ l9d$z BY0 另外提一点,关于对.Net,Java等应用程序的扩展,可以使用
record class,它将会更高效,如果能够有开发的支持,那么可以说基本没有无法自动化的东西了,今后有时间,我会另写一文介绍record class。
,} ]Gr5jO2k051Testing软件测试网4c5Xj(Rk 最后大家如果有关于DLL方面的想法,欢迎以我讨论,可以留言到
www.lantianwei.com, 大家共同进步。
相关阅读:
- [SilkTest]关于ANYTYPE的处理 (lantianwei, 2009-3-14)
- 响应号召,开始写日志(三):lr脚本中MD5码获取方案 (Lennon, 2009-3-18)
- 原理QTP,编写属于自己的控件控制插件 (mythxhg, 2009-5-07)
- [SilkTest] 关于SilkTest中的场景恢复函数 (lantianwei, 2009-6-05)
- 【QTP系列讲座 8】 == 自定义COM组件的实现 (二)activex dll生成篇 == (zzxxbb112, 2009-10-17)
- 【QTP系列讲座 9】 == AutoItX技术的应用 == (zzxxbb112, 2009-10-17)
- 关于SilkTest中引用操作符@的使用 (lantianwei, 2009-10-23)
- 最近学习笔记上传 (luxuabc, 2009-10-28)
- SilKTest学习笔记 (luxuabc, 2009-10-28)
- 自动化测试中调用DLL (fishy, 2009-12-14)
论坛模式
推荐
收藏
分享给好友
管理
TAG:
DLL
SilkTest
LantianWei
-
yanbaolin发布于2011-10-28 16:05:16
-
好强大
-
sincor
发布于2013-06-04 17:43:18
-
现在st中有 highlight这个函数了 直接高亮 "对象.highlight"
-
fdurc发布于2013-12-25 08:50:20
-
哪个呦,发这么好的帖子,顶你
-
dinglingxdd发布于2014-01-28 11:12:40
-
必须顶!