让Watir认识并操作文件上传
12月 5th, 2008
从中午开始写新建广告组的watir自动化测试代码,结果一开始就遇到头痛的上传问题.
根据http://wiki.seleniumhq.org/display/WTR/File+Uploads ,下载了filefield_test.rb,并在rb文件里加入了如下代码
ie.goto “tinypic.com”
ie.file_field(:id, “the_file”).set(”C:\\image.png”)
结果只能打开文件上载的窗口,接下去的操作就做不下去了.
还是继续google了好久,阿里巴巴QA架构组的51testing空间找到了解决方法,发上来给大家共享下.
1. 首先修改C:\ruby\lib\ruby\gems\1.8\gems\watir-1.5.6\watir\input_elements.rb文件
找到FileField类下的set方法,把原来的替换成
system("rubyw -e \"require 'win32ole'; @autoit=WIN32OLE.new('AutoItX3.Control'); waitresult=@autoit.WinWait '选择文件', '', 15; sleep 1; if waitresult == 1\" -e \"@autoit.ControlSetText '选择文件', '', 'Edit1', '#{setPath}'; @autoit.ControlSend '选择文件', '', 'Button2', '{ENTER}';\" -e \"end\"")
这样做是为了支持中文.
2. 然后,就可以加入程序代码了