web自动化工具sahi_使用Sahi自动化Web应用程序测试

本文介绍开源工具Sahi,用于自动化Web应用程序测试。Sahi提供跨浏览器的记录和重放功能,支持Java和Ruby等语言的测试脚本,并能与JUnit和Ant集成。文中通过实例展示了Sahi的安装、配置、脚本录制、Junit集成及Ant测试的使用方法,同时还探讨了Sahi的高级定位方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web自动化工具sahi

QTP,Rational Functional tester(RFT),Selenium和Webdrive是用于自动测试Web应用程序的许多商业工具和开源框架的一些示例。 在本文中,了解Sahi,这是一种在自动化测试领域中日益流行的工具。 Sahi是一个开源工具,它提供:强大的功能,可在浏览器之间进行记录和重放; 用于编写测试脚本的不同语言驱动程序(Java,Ruby); 并支持AJAX和高度动态的Web应用程序。 Sahi还支持https和NTLM身份验证。 图1显示了Sahi如何适应模拟用户操作。

图1.模拟的用户操作
Sahi充当代理服务器,它将用户请求传递到实际应用程序并获得响应

关于沙希

Sahi具有以下强大功能:

Sahi控制器(IDE)
可跨浏览器工作并以两种模式记录脚本:Sahi或Java格式。
可靠的物体识别
独立于HTML结构。 它的直观API(例如nearin method即使页面只有很小的变化,也可以帮助定位浏览器元素,从而消除了对XPath的需求(这很难理解)。
隐式等待
无需处理等待实现,即使对于AJAX和页面加载也是如此。 测试人员不需要了解应用程序的内部。

使用Sahi进行测试

本文的其余部分将通过一个示例应用程序向您展示如何使用Sahi进行测试。 您可以下载示例应用程序和测试用例,以进行后续操作。

安装与配置

要安装和配置Sahi:

  1. 下载最新版本(请参阅参考资料 ),然后解压缩文件。 Sahi需要Java 1.5或更高版本。
  2. 启动Sahi的代理服务器。 启动脚本位于<sahi_root> \ userdata \ bin中。
    • 对于Windows:start_dashboard.bat
    • 对于Linux:start_dashboad.sh
    如图2所示,您可以选择一个浏览器图标来启动要使用的浏览器。
    图2. Sahi仪表板
    Sahi仪表板:您可以使用它来修改配置

    对于此示例,我们无需担心浏览器配置。 另外,Sahi还提供GUI工具供您启动浏览器。 运行start_sahi.bat/start_sahi.sh以启动它,然后单击浏览器图标以启动代理服务器和浏览器进程。
  3. 输入start_sahi.bat/start_sahi.sh ,这是在诸如Ant之类的构建工具的帮助下进行静默执行所必需的。

    注意:仅对于Internet Explorer(IE),您必须手动配置浏览器以使用Sahi的代理。 或者,您可以在启动Sahi代理服务器时使用Sahi提供的工具来设置浏览器的代理。 代理主机和端口是localhost:9999。 (可以通过<sahi_root> \ config \ sahi.properties修改端口。)

记录Java格式的测试脚本

Sahi提供了两种现成的脚本格式:Sahi和Java。 您可以在<sahi_root> \ config \ sahi.properties中修改默认选项Sahi。 Sahi格式是类似于Java脚本的格式,仅在Sahi Java脚本引擎中运行。 本文中的示例使用了更常见的Java格式,因为脚本可以轻松地与其他测试工具和大型测试项目的框架集成。 Java格式涉及可以与Junit和TestNG之类的工具集成的通用Java代码段。

要进行简短测试:

  1. 打开您要测试的Web应用程序。 按ALT键,然后双击页面上。 (使用Firefox 3进行演示。)
  2. 选择Record ,如图3所示:
    图3.用于记录的Sahi控制器
    Sahi Controller的屏幕截图,其中记录了所有执行

    选择后,它将变为停止按钮。
  3. 在Web应用程序中执行一些操作,然后选择“ 停止” 。 记录您在应用程序中执行的所有步骤,如图4所示:
    图4.控制器记录的脚本
    Sahi Controller记录脚本的屏幕截图

    在记录操作时,您可以根据需要插入一些断言。 该工具还提供了一些插入选项,但是建议您手动添加它们。

与Junit集成

JUnit(单元测试框架)对于建立测试驱动的开发非常重要。 在许多情况下,您可以使用Junit格式创建测试脚本,以方便使用和报告。 前面的示例以Java格式记录了测试脚本。

要以Junit格式格式化上述脚本,请在Eclipse中创建一个Java项目,然后添加位于<sahi_root> \ lib中的junit4库和sahi.jar。 创建junit4格式的测试脚本时,您必须启动Sahi环境所需的一些变量。 本文中的示例扩展了BaseTestCase.java,以便可以通过扩展此类来执行所有其他测试用例。

demo4sahi类扩展了BaseTestCase类,以实现与Sahi代理相关的所有启动任务,然后验证两点:

  • 如果电子邮件格式为OK,则将获得OK
  • 如果电子邮件格式不正确,您将收到Error

清单1显示了一个典型的Junit4格式的测试脚本。

清单1. Junit4格式的测试脚本
public class test4demo extends BaseTestCase {

    @Before
    public void setUp() {
        login();
    }
 
    @After
    public void tearDown() {
        logout();
    }
   
    @Test
    public void testDemo1() {
        browser.textbox("email").setValue("demo for sahi");
        browser.submit("Submit").click();
        assertTrue(browser.label("error").exists());
    }
   
    @Test
    public void testDemo2() {
        browser.textbox("email").setValue("demo@sahi.com");
        browser.submit("Submit").click();
        assertTrue(browser.label("ok").exists());
    }
}

要在无人看管的情况下运行测试脚本,您需要为Sahi运行时实现所有初始化和完成。 有四个基本的初始化部分,如表​​1所示:

表1. Sahi环境的初始化
BaseTestCase中的方法 描述
createConn() 初始化SAHI_BASE_PATHUSER_DATA_PATH和浏览器类型,并创建一个浏览器进程。
delConn() 清理浏览器进程,并将系统还原到初始状态。
setIEProxy() 在执行测试之前设置IE代理。 仅用于IE。
login()logout()和其他常用的高级实用程序 所有脚本的公共方法。

作为所有测试脚本的父类, BaseTestCase将在运行时在所有其他方法之前调用createConn方法,因此它可以打开浏览器以模拟用户的操作。 清单2显示了BaseTestCase一些代码。

清单2. BaseTestCase
public class BaseTestCase {
	protected Browser browser;
	protected Proxy proxy;
	protected boolean isProxyInSameProcess = false;
	protected String browserType = "firefox";
	@Before
	public void createConn() throws Exception {
		Configuration.initJava("f://Program/sahi", "f://Program/sahi/userdata/");
		if (isProxyInSameProcess) {
			proxy = new Proxy();
			proxy.start(true);
		}
		browser = new Browser(this.browserType);
		browser.open();
	}
	@After
	public void delConn() throws Exception {
		browser.setSpeed(100);
		browser.close();
		if (isProxyInSameProcess) {
			proxy.stop();
		}
	}
	public void login(){
		browser.navigateTo("http://localhost:8080/demo");
		browser.textbox("username").setValue("ligang");
		browser.password("password").setValue("welcome");
		browser.submit("Login").click();
	}
		/**
	 * Setting IE's proxy during testing environment initialization
	 * 
	 * @param enable
	 */
	public void setIEProxy(boolean enable) {
		try {
			Runtime.getRuntime().exec(
			new String[] {
				SetEnv.sahiBasePath
					+ "\\tools\\toggle_IE_proxy.exe",
				(enable ? "enable" : "disable") });
			Thread.sleep(1000);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
    ......
}

用Ant测试

Apache Ant是一种常见的构建工具,尤其用于基于Java的项目。 Sahi框架包括可在build.xml文件中使用的Ant的JAR文件。 但是,此开箱即用的组件是为Sahi的结构设计的。 尽管您可能想使用Junit来设置整个基础架构,但是它不够灵活或不够强大。 为了对示例项目进行回归测试,编写了一个build.xml,其中包括:

  • 启动和停止Sahi代理服务器,如清单3和4所示:
    清单3.启动Sahi代理服务器
    <target name="start_sahiserver">
    	<echo message="starting sahi server" />
    		<java fork="true" spawn="true" classname="net.sf.sahi.Proxy">
    			<classpath>
    				<fileset dir="${sahi.dir}">
    					<include name="**/*.jar" />       
    				</fileset>
    			</classpath>
                <arg value="${sahihome.dir}" />
                <arg value="${sahiuser.dir}" />
            </java>
            <antcall target="proxyon" />
    </target>
    清单4.停止Sahi代理服务器
    <target name="stop_sahiserver">
    	<echo message="going to stop Sahi server" />
    	<sahi stop="true" sahihost="localhost" sahiport="9999" /v
    	<antcall target="proxyoff" />
    </target>
  • 打开和关闭IE代理设置,如清单5所示:
    清单5.打开/关闭IE代理
    <target name="proxyon">
    	<exec executable="${sahihome.dir}/tools/toggle_IE_proxy.exe">
    		<arg value="enable" />
    	</exec>
    </target>
    <target name="proxyoff">
    	<exec executable="${sahihome.dir}/tools/toggle_IE_proxy.exe">
    		<arg value="disable" />
    	</exec>
    </target>
  • 正在报告。

这些动作可以分别执行,以便在Eclipse IDE中轻松调试。

进阶主题

在Web应用程序测试中,有效识别对象非常重要。 与许多其他测试工具不同,Sahi具有一些功能强大的API,可以在网页中定位对象。 表2列出了一些示例。 请参阅“ 相关主题”部分,以获取具有完整列表的联机文档的链接。

表2.特殊的定位方法
特征 方法 样例代码
支持正则表达式 几乎所有元素的标识符 browser.link(/Link to .*/)
基于DOM关系定位 在附近 browser.button("delete").in(browser.cell("item1")).click()

browser.button("delete").near(browser.cell("item1")).click()

根据位置关系进行定位 browser.button("delete").under(browser.cell("item1"))

摘要

本文探讨了Sahi(一种用于自动执行Web应用程序测试的工具)。 Sahi是一个开源工具,允许跨浏览器记录和重放。 在本文中,您了解了用于编写测试脚本的不同语言驱动程序。 一个示例应用程序和测试案例展示了如何格式化Junit的脚本以及如何使用Apache Ant进行测试。 还概述了Sahi的高级API。


翻译自: https://www.ibm.com/developerworks/web/library/wa-sahi/index.html

web自动化工具sahi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值