Watir自动化测试
最近一直在忙着修改我的watir自动化脚本,为了让脚本可以在不同的浏览器上及不同的操作系统上都能够正常的运行,真是费尽脑汁去查找相关的资料。嘿嘿,在经理的帮助下,我的脚本终于可以在不同的系统不同的浏览器上运行了。
(一)watir对中文网页的支持
Watir现在的版本已经升级到1.6.5,但是这个版本对中文网页的支持却不如1.6.2,所以当测试中文网页的时候,你需要修改下类库中的win32ole.rb文件,具体路径为:ruby\lib\ruby\gems\1.8\gems\watir-1.6.5\lib\watir,将win32ole.rb文件中的WIN32OLE.codepage = WIN32OLE::CP_UTF8更改为:WIN32OLE.codepage = WIN32OLE::CP_ACP。
codepage值有下面这些,不行的话可以逐个修改下
WIN32OLE::CP_ACP
WIN32OLE::CP_OEMCP
WIN32OLE::CP_MACCP
WIN32OLE::CP_THREAD_ACP
WIN32OLE::CP_SYMBOL
WIN32OLE::CP_UTF7
WIN32OLE::CP_UTF8
(二)相对工作路径
使用excel文件对watir自动化脚本进行数据驱动。为了方便脚本的管理,在读取excel文件的时候,应该需要使用相对路径。
获得当前执行文件的文件名:_FILE_
获得当前文件的目录:File.dirname(_FILE_)
获得当前执行文件的目录完整路径:
Require ‘pathname’
Pathname.new(File.dirname(_FILE_)).realpath
获得当前执行文件的完整路径:
Require ‘pathname’
Pathname.new(_FILE_).realpath
File.basename(filename[,suffix]):
返回filename中的最后一条斜线后面的部分。若给出了参数suffix且它和filename的尾部一致时,该方法会将其删除并返回结果。
File.basename(filename[,suffix]):
返回filename中的最后一条斜线后面的部分。若给出了参数suffix且它和filename的尾部一致时,该方法会将其删除并返回结果。
File.dirname(filename):
以字符串的形式返回filename中最后一条斜线之前的部分。若文件名中不含斜线,则返回”.”(当前目录)。
File.expand_path(path[,default_dir]):
将path展开为绝对路径后返回该路径字符串。若path是相对路径则以default_dir为基准进行扩展。若没有default_dir或其值为nil时将使用当前目录。
因此当需要获得excel文件要:
File.dirname(File.expand_path(”_FILE_”))+”/****.xls
但是如果你所需要的excel文件在根目录下就可以这样写:
File.dirname(File.expand_path(”_FILE_”))+”*****.xls
(三)获取操作系统的语言
有的时候自动化测试需要根据操作系统语言,来决定脚本应该怎样运行。比如对于中文系统的浏览器,popoup box给出的button会是中文的“确定“,但是在英文系统下的浏览器,popoup box给出的button会是中文的“ok“或者”cancel”.
globalAlloc= Win32API.new(’kernel32′, ‘GetSystemDefaultUILanguage’,”, ‘I’)
puts globalAlloc.Call()