最近在学习selenium自动化测试指南这本书,里面讲到了selenimu IDE、selenium 1(RC)以及selenium2(web driver),个人觉得使用selenium2(web driver)还是比较上手。下面记录了本人使用selenium2写的一个登陆页面的自动化。
一、环境搭建
1.需要的jar包
selenium-java-2.44.0.jar、以及selenium2.44 lib目中的一系列jar包,这些从网上都能找到。
2.myeclisps10
本人使用的工具是myelips10,打开工具,新建一个java工程,把上面1中的jar包导入,构建成功即可。
二、用例设计和脚本开发
登录功能测试用例 | ||
序号 | 测试步骤 | 检查点 |
1 | 浏览器输入url地址 | 检查是否成功进入后台登录页面 |
2 | 点击登录按钮 | 弹窗提示“请输入账号” |
3 | 输入小于5个字符或者大于30个字符的用户名,点击登录 | 弹窗提示“账号的长度范围是5-30个字符” |
4 | 输入大于5个字符小于30个字符的错误用户名,点击登录 | 弹窗提示“账号或密码错误,请重新输入” |
5 | 输入密码,点击登录 | 弹窗提示“请输入账号” |
6 | 输入正确用户名和密码,点击登录 | 成功登录,操作栏上出现“你好,xxx”字样 |
测试用例
以下为脚本开发:
在myeclipse中新建一个后台登录脚本,如下
public class BackLogin {
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
WebDriver driver = new FirefoxDriver();
Navigation navigation = driver.navigate();
String url = "http://admin.9itest.com/";
navigation.to(url);
Thread.sleep(3000);
System.out.println("检查是否成功进入用户登录页面:"+url.equals(driver.getCurrentUrl()));
String tipText1 = "请输入账号!";
driver.findElement(By.tagName("button")).click();
Thread.sleep(2000);
System.out.println("不输入用户名和密码弹窗提示'请输入账号':"+tipText1.equals(driver.findElement(By.id("userName")).getAttribute("nullmsg")));
driver.findElement(By.name("password")).sendKeys("123456");
driver.findElement(By.tagName("button")).click();
Thread.sleep(2000);
System.out.println("只输入密码弹窗提示'请输入账号':"+tipText1.equals(driver.findElement(By.id("userName")).getAttribute("nullmsg")));
String tipText2 = "账号的长度范围是5-30个字符!";
driver.findElement(By.id("userName")).sendKeys("aaaa");
driver.findElement(By.tagName("button")).click();
Thread.sleep(2000);
System.out.println("小于5个字符时弹窗提示'账号的长度是5-30个字符!':"+tipText2.equals(driver.findElement(By.id("userName")).getAttribute("limitmsg")));
driver.findElement(By.id("userName")).clear();
driver.findElement(By.id("userName")).sendKeys("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
driver.findElement(By.tagName("button")).click();
Thread.sleep(2000);
System.out.println("大于30个字符时弹窗提示'账号的长度是5-30个字符!':"+tipText2.equals(driver.findElement(By.id("userName")).getAttribute("limitmsg")));
String tipText3 = "账号或密码错误,请重新输入!";
driver.findElement(By.id("userName")).clear();
driver.findElement(By.id("userName")).sendKeys("aaaaa");
driver.findElement(By.name("password")).sendKeys("123456");
driver.findElement(By.tagName("button")).click();
Thread.sleep(2000);
System.out.println("输入错误的用户名和密码提示'账号或密码错误,请重新输入!':"+tipText3.equals(driver.findElement(By.name("password")).getAttribute("nullmsg")));
driver.findElement(By.id("userName")).clear();
driver.findElement(By.name("password")).clear();
driver.findElement(By.id("userName")).sendKeys("administrator");
driver.findElement(By.name("password")).sendKeys("666666");
driver.findElement(By.tagName("button")).click();
Thread.sleep(2000);
String linkText = driver.findElement(By.linkText("你好,超级管理员")).getText();
System.out.println("成功登录,操作栏上出现‘你好,xxx':" + "你好,超级管理员".equals(linkText));
driver.quit();
}
三、遇到的问题
在selenium学习调试代码过程中,经常会碰到元素不能定位到的问题,需要尝试通过多种方式来解决,第一个考虑的是浏览器版本问题,本人使用的是firefox30版本;二是在定位元素时可以通过不同的方式来定位(比如说xpath、css、id、name、tagName等等)
上面还谈不上是入门吧,不过可以尝试对功能自动化有一个大体的认识。