2. Sahi的工作原理
图1.Sahi架构图
Web自动化测试的本质就是模拟用户事件(单击、双击、输入文本等操作)获取结果状态并验证是否符合预期。如上图所示,Sahi的核心一个用Java编写的代理服务器。它位于Web应用与浏览器当中。当HTTP请求响应通过Sahi代理服务器时,便被注入了用来回放测试用例的Javascript。这些 Javascript中,一部分是Sahi本身用来驱动脚本运行的代码,另一部分是用户代码被Sahi代理服务器解析成的Javascript。目前 Sahi支持三种编程语言:Sahi脚本, Java和Ruby。
3. Sahi控制器
运行/bin/dashboard.sh可以启动Sahi的Dashboard窗口。Dashboard窗口中显示了所有Sahi预配置并且用户系统上存在的浏览器。如果需要手工添加新的浏览器,可以点击下方的Configure修改浏览器配置文件。
图2.Sahi Dashboard
点击浏览器图标,会弹出相应的浏览器窗口(此时Sahi已经自动给浏览器配置了Sahi代理服务器)。
图3.Sahi初始页面
在浏览器窗口中按住ALT键并双击鼠标左键,就会弹出Sahi控制器窗口。(通常这只在IE中工作,在Firefox和Chrome中你需要按住 ALT+CTRL)。Sahi控制器可以工作在所有Sahi支持的浏览器上。录制和回放是Sahi控制器窗口中最重要的两个标签页。
录制标签页
图4.Sahi控制器 – 录制标签页
输入文件路径后点“录制”便开始录制,点“停”即停止录制,非常简单。标签页的中部是一个对象识别器,在页面上按住CTRL键,并将鼠标左键悬停在某个元素上,对象识别器就显示出能够识别该元素的Sahi语句。另外,你可以在下方的输入框中直接输入Sahi语句并查看运行结果。
回放标签页
图5.Sahi控制器 – 回放标签页
回放标签页不仅能够一次性运行脚本,还可以单步运行,甚至可以中途暂停,这给调试代码带了很大便利。点击下方的链接可以查看解析后的脚本以及运行日志等。
4. Sahi脚本
Sahi脚本基于Javascript,不同的是Sahi脚本中所有的变量必须带有$前缀。Sahi代理服务器负责将用户编写的Sahi脚本解析成 Javascript并在Rhino引擎中执行(Rhino是一个开源的使Javascript运行于JVM的项目)。所以,Sahi脚本能够执行文件甚至数据库操作也就不足为怪了。Sahi脚本定义.sah文件中,但是所有直接访问DOM节点的函数必须定义在browser tag中。
二.使用Sahi脚本测试Dojo应用
下面与大家分享一些我个人使用Sahi测试Dojo应用的经验。为了使示例代码能够被读者方便地运行,选取http://demos.dojotoolkit.org/demos/form/demo.html 假设为我们将要测试的应用。这是一个用来演示Dojo表单Widget的页面。
1. 如何运行示例代码
1.下载及安装Sahi(http://sahi.co.in/w/using-sahi)
2.下载sahidojodemo.zip并解压缩到Sahi的userdata/scripts下面。解压后应该下面这个样子。
/userdata/scripts/sahidojodemo/appobjs/JobAppFormPage.sah
/userdata/scripts/sahidojodemo/tasks/JobAppFormTasks.sah
/userdata/scripts/sahidojodemo/testcases/JobAppFormTests.sah
/userdata/scripts/sahidojodemo/testcases/myapp.suite
/userdata/scripts/sahidojodemo/testcases/testdata.csv
/userdata/scripts/sahidojodemo/core.sah
/userdata/scripts/sahidojodemo/run.sh 3.启动Sahi代理服务器。
4.运行Sahi的bin目录下的sahi.sh脚本,或者dashboard.sh也可以启动Sahi 代理服务器(该脚本用来启动Sahi Dashboard,同时启动Sahi代理服务器)。建议启动dashboard,这样你能清楚地看出哪些浏览器被Sahi探测到了。
5.如果Sahi Dashboard中显示了Chrome,你可以直接运行sahidojodemo下的run.sh。否则,你需要把run.sh中的chrome替换成你系统中存在的浏览器,比如firefox。
6.如果一切正常你会看到Dojo的Job Form Application应用被打开,然会进行了一系列操作后关掉。这时,如果一些正常,Sahi的控制台上会显示"Success"。如果失败了,你可以去sahi/userdata/logs/playback下面查看日志。
原文转自:http://www.uml.org.cn/Test/201204265.asp