在Watir中做数据驱动,采用Excel作为数据源是个不错的选择,使用Excel需要win32ole包,读取Excel非常方便:
require 'win32ole'
excel = WIN32OLE::new('excel.Application')
workbook = excel.Workbooks.Open('D://Ruby Watir//Watir//watir project//Data.xls')
worksheet = workbook.Worksheets(1) #定位到第一个sheet
worksheet.Select
line=1
data = []
while worksheet.Range("a#{line}")['value']
puts worksheet.Range("a#{line}:b#{line}")['value'] #输出每行的第一列和第二列数据
data << worksheet.Range("a#{line}:b#{line}")['value'] #存到数组中
line = line + 1
end
excel.Quit
关于Watir数据驱动:
http://wiki.openqa.org/display/WTR/Data-Driven+Tests
有现成的Excel接口类库可以简化Excel数据的读写:
http://wiki.openqa.org/display/WTR/Excel+interface+class
下面是采用这个类库写的Watir数据驱动测试脚本:
require 'xls'
require 'watir'
xlFile = XLS.new(Dir.pwd + '/test_XLS_data.xls') #grab the data file in the same dirrectory
myData = xlFile.getRowRecords('Google Search Data','Example') #pull data records from excel
xlFile.close
myData.each do |record|
ie = Watir::IE.start('google.com')
ie.text_field(:name,'q').set(record['SearchString'])
ie.button(:value,/Search/i).click
if ie.contains_text(record['ContainsText'])
puts "Results of search: '#{record['SearchString']}' contains '#{record['ContainsText']}'"
else
puts "Error: could not find text: '#{record['ContainsText']}' in results of search: '#{record['SearchString']}'"
end
sleep 3
ie.close
end