首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Sahi 实现 Web 自动化测试(4)

使用 Sahi 实现 Web 自动化测试(4)

Sahi 的语法与示例应用Sahi 脚本是基于 JavaScript 的,而 Sahi 脚本是通过代理解析的,并能够在 rhino JavaScript 引擎中有效执行的。除了变量前的强制符$,它和 JavaScript 基本很像。
Sahi 操作的代码声明是一句以分号结尾的普通代码行,如:
1
_click(_link("Login"));




变量声明
1
var$variableName =value;




或者先声明再赋值:
1
2
var$variableName;// declaration
$variableName =value;// assignment




所有的变量都是以$符号开头的,关键字 var 用于局部变量,如:
1
2
3
var$username ="SahiTestUser";
var$password;// declaration;
$password =$username +"_password";// "SahiTestUser_password"




函数声明
1
2
3
4
5
6
7
8
9
// function
declarationfunctionlogin($usr,$pwd){
_click(_link("Login"));
_setValue(_textbox("username"),$usr);
_setValue(_password("password"),$pwd);
_click(_submit("Login"));
}
// function call
login("sahi_user","secret");




在一个 Sahi 代码文件中可以通过_include来包含调用其他 Sahi 文件,如:
1
_include("includes/common_functions.sah");




由上面的语法可知,Sahi 是由下划线开头,带上操作或 HTML 元素,非常简单,清晰易懂,这些 API 基本都是能够看字面就能理解它的功能。
Sahi 的 API 主要可以分为 3 类:浏览器访问 API浏览器操作 API混合 API
浏览器访问 API:用于访问浏览器上的元素,并通过代理来注入这些 API 到浏览器中去。
浏览器操作 API:主要来执行一些如点击、输入数据等操作,并在浏览器上声明这些元素的。
混合 API:是既能在浏览器又能在代理上用于处理异常和操作文件和数据库的。
由于 Sahi 对网页的访问方法的 API 很多,大家可以参考 进行学习。
由上可知,Sahi 脚本都是很直接的声明和操作过程,在一个运行的代理上,由 Sahi Dashboard 来管理执行。如果我们希望能够将我们的 Sahi    自动执行的过程与我们其他的项目功能模块进行集成,那么把这些脚本转换成 Java 代码,又能用独立运行,是一件两全其美的事。
接下来,本文将介绍一个用 Sahi Java Driver 来编写 Sahi 自动化脚本实现 Web 自动化测试的简单案例。
首先,将 Sahi 的开发库包文件 sahi.jar 加入到 Java 项目中,该文件位于 Sahi 安装路径下..\sahi\lib\下,接下来就可以参考 Sahi 的    Java API 来开发自动化测试脚本。下面是一个简单的案例脚本:
清单 1. 导入 Sahi 类包
1
2
import net.sf.sahi.client.Browser;
import net.sf.sahi.config.Configuration;




设置 sahi 安装路径和 userdata 路径   
清单 2. 配置 Sahi 代理
1
2
3
String sahiBase = "C:/Users/ADMIN/sahi/";
String userDataDirectory = "C:/Users/ADMIN/sahi/userdata";
Configuration.initJava(sahiBase, userDataDirectory);




您可以设置任意一种浏览器类型,也可以在 sahi/userdata/config/browser_types.xml 文件中自己创建定义
清单 3. 配置浏览器并启动
1
2
3
String browserType = "firefox";
Browser browser = new Browser(browserType);
browser.open();




清单 4. 操作代码示例
1
2
3
4
5
6
7
8
9
10
browser.navigateTo("http://sahi.co.in/demo/training/");
browser.textbox("user").setValue("test");
browser.password("password").setValue("secret");
browser.submit("Login").click();
browser.textbox("q").setValue("2");
browser.textbox("q[1]").setValue("9");
browser.textbox("q[2]").setValue("4");
browser.button("Add").click();
System.out.println(":: browser.textbox(\"total\").value()=" + browser.<br>textbox("total").value());
browser.close();// close the browser




需要注意一点,除了 Firefox 浏览器,其他的浏览器都必须进行服务器代理配置,并在运行脚本前打开 Sahi 代理服务。
实际测试结果表明,Sahi 代码简介,运行轻巧快速,而且它还能与外置的一些模块集成完成发送邮件,读取 PDF 文件等操作,功能非常完善。
结束语综上所述,本文从当前 Web 自动化测试的困境出发,通过与其他开源 Web 自动化测试进行对比,介绍了 Sahi 的特性和优势。主要从基于上下文页面识别机制和智能页面加载响应等待机制两方面进行阐述。同时,详细介绍了 Sahi 的工作原理以及如何安装部署进行自动化测试开发的过程。总之,Sahi 提供了一套在多浏览器和多编程语言的开源自动化测试方案,解决了当前一些页面元素难找,页面响应不同步而导致测试失败的问题。Sahi 是一个能够快速部署,易于开发并且功能强大的开源 Web 自动化测试工具。由于篇幅所限,本文不能对 Sahi 所有的功能进行一一阐述,希望有兴趣的朋友一起研究探讨。
返回列表