51Testing软件测试论坛

标题: selenium初步使用 [打印本页]

作者: Mario洁    时间: 2018-3-12 16:28
标题: selenium初步使用
前两天在一本《程序员》杂志上接触了selenium这个框架,说是可以和Junit整合进行web界面测试,
将各模块的功能自动的展现个客户,这无疑吸引了我。花了两天的时间研究了一下。
        selenium大致可分为两个版本Selenium Core和SeleniumRC,第一种是以网页的形式编写TestCase,
而后一种用Junit,并且支持多种语言,个人表较喜欢后一种,可以和ANT整合用于自动化测试。本
人也是初步使用,学的过程中主要结合API和编写好的用例说明,具体的情况可在问官方网站进行了
http://www.openqa.org/selenium/
        seleniumRC下载地址:http://selenium-rc.openqa.org/download.jsp运行测试前在DOS命令下
启动selenium-server.jar(无需放到环境目录下):java -jar selenium-server.jar
具体测试用例如下:主要用于form表单的提交测试
  1. package org.selenium.test;

  2. import com.thoughtworks.selenium.SeleneseTestCase;

  3. public class TestSelenium extends SeleneseTestCase {

  4.     public void testSelenium() throws Throwable {
  5.         try {
  6.             // 每个测试步骤间隔1秒
  7.             selenium.setSpeed("1000");
  8.             // 打开测试的网页
  9.             selenium.open("http://localhost:8080/TestProject/form/selenium.jsp");
  10.             // 获取标题
  11.             assertEquals("selenium", selenium.getTitle());
  12.             assertTrue(selenium.isElementPresent("xpath=//input[@name='username']"));
  13.             // 向input中type为text的栏位键入信息
  14.             selenium.type("xpath=//input[@name='username']", "chenxu");
  15.             selenium.type("xpath=//input[@name='password']", "password");
  16.             // 选择下拉列表
  17.             selenium.select("xpath=//select[@name='select']", "index=1");
  18.             assertEquals("1", selenium.getSelectedIndex("xpath=//select[@name='select']"));
  19.             assertEquals("chenxu", selenium.getSelectedValue("xpath=//select[@name='select']"));
  20.             // 勾选或去选check/radio
  21.             selenium.check("xpath=//input[@id='check2']");
  22.             //获取name为check栏位的id属性
  23.             selenium.getAttribute("check@id");
  24.             assertTrue(selenium.isChecked("xpath=//input[@id='check2']"));
  25.             selenium.uncheck("xpath=//input[@id='check2']");
  26.             assertFalse(selenium.isChecked("xpath=//input[@id='check2']"));
  27.             assertEquals("chenxu", selenium.getValue("xpath=//select[@name='select']"));
  28.             // 点击提交按钮
  29.             selenium.click("xpath=//input[@type='submit']");
  30.             // 等待页面载入
  31.             selenium.waitForPageToLoad("3000");
  32.             // 获取新页面标题
  33.             assertEquals("success", selenium.getTitle());
  34.             //确保测试中没有错误出现
  35.             checkForVerificationErrors();
  36.         } finally {
  37.             //清空错误信息列表
  38.             clearVerificationErrors();
  39.         }
  40.     }
  41. }
复制代码
注:1,这里的ElementLocator使用xpath方式,表达式看上去复杂,其实并不难理解,如"xpath=//
input[@id='check']"xpath=//是固定模式,input指form表单的input栏位,id自然就是input中的id属性
了。selenium可以使用多种元素定位方法(ElementLocator)具体方法可查阅API.
        2,这里的测试类继承了SeleneseTestCase,该类继承至Junit的TestCase,其setup()和teardown()方
法用于初始化和终止selenium服务,同时覆盖了一些断言(assert)方法。

测试界面代码如下:selenium.jsp
  1. <%@ page language="java" pageEncoding="ISO-8859-1"%>
  2. <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
  3. <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

  4. <html>
  5.     <head>
  6.         <title>selenium</title>
  7.     </head>
  8.     <body>
  9.         <html:form action="/selenium">  
  10.             <table>
  11.                 <tr><td>UserName:</td><td><input type="text" name="username"/>
  12.                 </td></tr>
  13.                 <tr><td>Password:</td><td><input type="password" name="password">
  14.                 </td></tr>
  15.                 <tr><td>Select:</td><td><select name="select">
  16.                     <option value="javaman">javaman</option>
  17.                     <option value="chenxu">chenxu</option>
  18.                 </select></td></tr>
  19.                 <tr><td>Radio:</td><td>
  20.                     man <input type="radio" name="radio" value="man" id="radio1" checked="checked"/>
  21.                     woman <input type="radio" name="radio" value="woman" id="radio2"/>
  22.                 </td></tr>
  23.                 <tr><td>CheckBox:</td><td>
  24.                     javaman<input type="checkbox" name="check" value="javaman" checked="checked" id="check1">
  25.                     chenxu <input type="checkbox" name="check" value="javaman" id="check2">
  26.                 </td></tr>
  27.                 <tr><td><input type="submit" value="submit"/></td></tr>
  28.             </table>
  29.         </html:form>
  30.         <a href="./success.jsp" id="link">link to success page</a>
  31.     </body>
  32. </html>
复制代码



作者: 梦想家    时间: 2018-5-14 08:48
学习




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2