Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活。Watir不仅可以支持IE浏览器,也可以支持Firefox浏览器。其应用范围也不仅限于WEB自动化测试,各种复杂的WEB自动化功能都可以用它来完成,例如自动抓取分析一些关注的网页。
最近帮一个同事把他写的基于Watir的自动化脚本用Script.NET生成独立可执行文件时候,发现一些问题,一开始生成的exe总是无法运行,简单研究了一下,最终终于生成了可以执行的exe,现在把生成的过程描述一下供大家参考。
1、首先要把Watir的所有依赖库都拷贝到Script.NET的ruby库目录下,因为Script.NET到2.2版本的Ruby开发包中并没有包含Waitr,可以在其他的ruby环境下先通过gem把watir下载下来,然后从ruby环境的gem目录(例如E:\ruby\lib\ruby\gems\1.8\gems)把下面几个子目录中的lib子目录的内容全部拷贝到Script.NET的ruby lib目录中(目录为Script.NET\V2\interps\ruby\lib\ruby\1.8):
activesupport-2.2.2
builder-2.1.2
commonwatir-1.6.2
firewatir-1.6.2
hoe-1.9.0
rake-0.8.4
rubyforge-1.0.3
s4t-utils-1.0.4
user-choices-1.1.6
watir-1.6.2
win32-api-1.4.0
win32-process-0.6.0
windows-api-0.3.0
windows-pr-1.0.1
xml-simple-1.0.12
2、拷贝上上面这些库之后,在Script.NET中已经可以运行Watir应用了,但构建成可执行文件之后再运行,确提示加载watir\IEDialog\Release\IEDialog.dll文件失败,可能因为Script.NET目前使用的打包方法在应用时候的问题,没有能够把这个动态库打进exe中,暂时没有时间深入研究,但是可以采用一个简单方法来规避,就是把IEDialog.dll文件不打进去,直接放在生成出的exe相同目录下来使用,但watir默认加载的IEDialog.dll就是在上面所说的lib的watir\IEDialog\Release目录中,要在其他目录加载的话,可以修改watir目录下的win32.rb文件的第4行,原来的内容如下:
@@iedialog_file = (File.expand_path(File.dirname(__FILE__) + '/..') + "/watir/IEDialog/Release/IEDialog.dll").gsub('/', '\\')
修改为
@@iedialog_file = 'IEDialog.dll'
就可以,这样修改之后IEDialog.dll文件只要在能找到的路径中就可以。
修改之后打包和运行脚本时候都需要把IEDialog.dll文件拷贝到需要生成exe的ruby脚本目录下才可以。
当然,目前这种方法并不是很完美的解决方案,Script.NET以后的版本会深入分析一下ruby的打包问题,正确让打包工作更完善、灵活、自动。
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛