使用XML维护Selenium自动化测试脚本

发表于:2013-6-07 10:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:祝尚元    来源:51Testing软件测试网采编

  ● Selenium IDE:Selenium-IDE 是快速开发 Selenium 测试用例的 Firefox 插件工具。可以利用它录制用户的基本操作,生成测试用例脚本,还可以将这些测试用例转化为其他编程语言的自动化测试脚本。通过点击回放按钮,可以回放录制的测试用例脚本。该工具还包含一个上下文菜单,测试工程师可以使用它从浏览器的当前显示页面选择页面元素,然后可以选择适配已选取元素的带预定义参数的 Selenium 命令来快速完成脚本编写。这一特性为自动化测试人员节省了花费在脚本编写上的时间、也提供了学习 Selenium 命令的快捷方法。

  ● Selenium Grid:Selenium Grid用于在不同的机器系统上、不同的浏览器上并行运行自动化测试。利用 Selenium Grid,可以轻松创建分布式自动化测试环境

  下面,我们将会使用 JUnit4 和 Selenium Server 演示如何对前文提到的测试用例编写自动化测试脚本。准备项目依赖的 Jar 文件,如 Selenium、dom4j 等 Jar 包,启动 Eclipse 集成开发环境,创建项目名称为 SeleniumDemo 的 Java 项目,并创建一个 JUnit 4 单元测试类:dw.junit. DWloginJUnit.java,依次编写 @BeforeClass、@Test 、@AfterClass 方法。本文提供源代码下载,您可自行下载,导入到自己的 Eclipse 开发工作区。首先,创建 Selenium 实例,启动浏览器,使浏览器窗口最大化,打开要访问的谷歌网站。代码如下:

  清单 1. 创建初始化 Selenium 实例

private static Selenium selenium;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
    selenium = new DefaultSelenium("localhost", 4444, "*iexplore",
               http://www.google.com/);
    System.out.println("正在启动 Selenium。。。");
    selenium.start();
    selenium.windowMaximize();
    selenium.open("/");
}

  然后在测试方法中实现演示用例,即在谷歌站点搜索输入框输入“ibm developerworks cn”,然后点击搜索按钮,最后截图。Pause 和 captureScreenshot()方法在本文附带的源代码文件中可查。执行用例部分的代码清单如下:

  清单 2. 执行用例的程序代码

@Test
 public void test() {
 // 在 Google 查询输入框,输入 ibm developerworks cn
 String queryString="ibm developerworks cn";
 selenium.type("//input[@name='q']", queryString);
   pause(1000);
 // 单击查询按钮,执行查询
 selenium.click("//input[@name='btnK']");
   pause(1000);
 System.out.println("获取的页面标题:"+selenium.getTitle());
   pause(2000);
 SeleneseTestBase.assertTrue(selenium.getTitle().contains(
 queryString));
 // 测试截图函数
 captureScreenshot("截图测试 JUnit");
  }

  最后,执行用例完毕后调用 tearDownAfterClass() 方法销毁 Selenium 实例。

  清单 3. 销毁 Selenium 实例

@AfterClass
public static void tearDownAfterClass() throws Exception {
     if(selenium != null){
            System.out.println("停止 Selenium !");
            selenium.stop();
        }
  }

  我们来演示如何执行这个单元测试类:先打开一个命令行窗口,并切换到 Selenium Server Jar 文件所在的目录,运行 java -jar selenium-server-standalone-2.{ 版本号 }.{ 修订版本号 }.jar 来启动 Selenium Server。在 Eclipse 工作区,右键选择 dw.junit.DWloginJUnit.java,选择 Run as — JUnit Test 来运行单元测试类。可以看到,浏览器自动启动起来,访问谷歌查询引擎主页,在搜索框自动输入了“ibm developerworks cn”,并点击查询按钮进行了查询。在 Eclipse 的 JUnit 视图,可以看到显示代表执行成功的绿色图标,在 SeleniumDemo 项目的根目录下生成了一个 png 格式的谷歌查询结果页面的截图文件。

  自动化测试框架开发人员如何做

  我们上文实现了演示用例的自动化回归测试,很多公司的测试工程师也是用这样的方法执行自动化测试的,但这不是最好的方法。理由如下:

  1、如果用例发生变更,比如界面的美化重构导致页面的某一控件元素信息变化,就不得不修改 Java 脚本代码,重新编译打包。

  2、擅长业务的测试人员很大一部分还是不熟悉 Java 编程的,他们期望有一种不需要编程的测试框架,这样他们就可以根据对业务的把握,快速编写自动化测试用例脚本。

  目前市场上还没有自动化测试工具可以直接识别传统的测试用例,继而直接执行自动化测试。也就是说,现在还没有工具可以读取像“用户名输入框”这样的纯文字性描述内容,然后映射到页面上的输入框控件。那么,如何添加一些额外的信息到传统的用例里面,从而使自动化工具能执行业务测试人员写的这些用例呢?

  先分析一下 Web 应用的测试用例及其测试步骤,显而易见,都包含下述几部分:Web 页面控件部分、用户执行动作部分、测试数据部分等。比如,演示用例中提到的用户输入框、密码输入框和登录按钮属于 Web 页面控件,动词输入、点击等属于用户执行动作,用户名和密码数据属于测试数据。我们需要把这几部分都添加额外信息、转化为测试工具能识别的形式。测试工具都提供定位 Web 页面控件的方式,以 Selenium 为例,它可以通过 CSS、JS 和 XPath 定位控件,方式非常丰富。用户执行动作对应着测试工具的应用编程接口 API,测试工具都提供类似单击 Click、双击 DoubleClick、拖拽 DragAndDown、输入数据 Type 等动作的 API。页面控件信息和测试数据对应着 API 的参数列表。比如,selenium.type(“//input[@id= ’ username ’ ]”,”我的用户名”)。

42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号