“天街小雨润如酥,草色遥看近却无。最是一年春好处,绝胜烟柳满皇都。”读一首古诗,心情也随之平静下来
一个完整的maven配置selenium webdriver工程实例(三)
上一篇 /
下一篇 2013-10-23 11:21:29
/ 个人分类:测试工具
本文是一个完整的使用maven配置的selenium webdriver工程,主要实现了自动化测试发送邮件的功能。
第一部分:业务处理
package choose; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import errorhandle.ErrorHandle; import mail.Mail; /**************************************************** * @author qicyt1812 * @description 遍历链接测试,可用于**同一类型链接是否到达正常页面 * @date 2013-10-14 ****************************************************/ public class ChooseEnterprise { //布尔变量用于存储方法返回值 public boolean bool = false;
//定义邮件内容 private String content = "";
//定义mail对象,以便于邮件发送 private Mail mail = null; File file = null; String[] toM =null;
private String baseUrl = "";
//定义错误处理对象 private ErrorHandle error = null;
//定义变量,存储时间,用于图片的存储 private Date date = null; private SimpleDateFormat sdateFormat = null;
public ChooseEnterprise(){ //初始测试访问地址 baseUrl = "http://www.csdn.net/";
//初始错误处理程序 error = new ErrorHandle();
//初始化邮件内容 content ="本用例的目的:在不知道有多少企业的情况下,遍历链接测试,保证用户所属的每个企业都可以正常进入,可用于**同一类型链接是否到达正常页面<br>"+ "本用例的主要测试点为:<br>"+ "1.用户登录平台 <br>" + "2.进入该用户所属的每个企业<br>"+ "3.退出登录 <br>"+ "本次测试的企业有:<br>";
/******************************** * 配置邮件发送的相关信息 ********************************/
//配置邮件发送地址,可发送多个人 toM = new String[1]; toM[0]="qicyt1812@csdn.net";
mail = new Mail("smtp.csdn.net","qicyt1812@csdn.net,"xx平台自动化测试","qicyt1812","qicyt password",toM);
//初始时间变量,并且设置时间格式 date = new Date(); sdateFormat=new SimpleDateFormat("yyyyMMddhhmmssSS"); //System.out.println(sdf.format(date.getTime())); }
public boolean Choose(WebDriver driver){
int i = 1; int j = 1; String str = ""; String strLast = ""; String msgContent = "";
//因为不知道需要打开的链接一共有多少个,所以使用while循环,始终给一个真值,直到条件满足跳出循环 while(i!=0){
driver.get(baseUrl + "zwyq/cl/login.jsp");
try{ /*********第1步:进入登录页面,在登录页面输入**********/ //判断是否成功进入登录页面,如果没有则跳出循环 if(!driver.findElement(By.cssSelector("span.fontred2")).getText().matches("^[\\s\\S]*使用xxx帐号登录[\\s\\S]*$")){ msgContent = "第"+i+"轮测试,没有正常开启登录页面"; bool = error.ErrorHandleMsg(mail, driver, msgContent); break; }
//输入手机号 driver.findElement(By.id("usersPhone")).clear(); driver.findElement(By.id("usersPhone")).sendKeys("13770646564");
//输入密码 driver.findElement(By.id("usersPassword")).clear(); driver.findElement(By.id("usersPassword")).sendKeys("123456");
//点击登录 driver.findElement(By.cssSelector("img")).click();
/**********第2步:到达选择企业页面*********/ //判断是否到达选择企业页面 // System.out.println(i+"***"+driver.findElement(By.xpath("//h3")).getText().matches("^[\\s\\S]*选择企业[\\s\\S]*$")); if(!driver.findElement(By.xpath("//h3")).getText().matches("^[\\s\\S]*选择企业[\\s\\S]*$")){ msgContent = "第"+i+"轮测试,没有到达选择企业页面"; bool = error.ErrorHandleMsg(mail, driver, msgContent); System.out.println("===没有到达选择企业页面,跳出==="); break; }
//获取属性为class=qy_bg的div元素的值 str = driver.findElement(By.xpath("(//div[@class='qy_bg'])["+i+"]")).getText(); //获取属性为class=qy_bg的div最后一个元素的值 strLast = driver.findElement(By.xpath("(//div[@class='qy_bg'])[last()]")).getText();
//点击企业名称,因为存在重复的值,所以需要做一些特殊处理,这个只针对于13770646564这个账号,一般情况下不会存在相同名称的企业,所以直接用else里面的语句即可。 if(i==2||i==7){ driver.findElement(By.xpath("(//a[contains(text(),'"+str+"')])[2]")).click(); }else{ driver.findElement(By.xpath("(//a[contains(text(),'"+str+"')])")).click(); }
/**********第3步:进入企业内刊主页***********/ //判断是否进入内刊主页 if(!driver.findElement(By.xpath("//p[2]")).getText().matches("^[\\s\\S]*"+str+"[\\s\\S]*$")){ msgContent = "第"+i+"轮测试,{"+str+"}企业,没有进入企业内刊主页"; bool = error.ErrorHandleMsg(mail, driver, msgContent); break; }
//如果成功进入,则截取内刊图片 try { File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); File pic = new File(System.getProperty("user.dir")+"/screenshot/choose/"+i+"-"+str+"-"+sdateFormat.format(date.getTime())+".png"); FileUtils.copyFile(screenShotFile, pic); mail.addAttachfile(pic.getPath()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
/**********第4步:点击进入个人中心的*************/ //点击个人中心的图标 driver.findElement(By.cssSelector("div.r_sz > a > img")).click(); //检查是否了进入个人中心 if(!driver.findElement(By.xpath("//div[4]/div[2]/h5")).getText().matches("^[\\s\\S]*退 出[\\s\\S]*$")){ msgContent = "第"+i+"轮测试,{"+str+"}企业,没有到达个人中心页面"; bool = error.ErrorHandleMsg(mail, driver, msgContent); break; }
/**********第5步:退出登录**********/ //点击退出 driver.findElement(By.linkText("退 出")).click(); //检查是否成功退出 if(!driver.findElement(By.cssSelector("p.fontred")).getText().matches("^[\\s\\S]*欢迎登录xxx[\\s\\S]*$")){ msgContent = "第"+i+"轮测试,{"+str+"}企业,退出失败,没有正常返回到登录页面"; bool = error.ErrorHandleMsg(mail, driver, msgContent); break; }
j = i;
// System.out.println(j); System.out.println(j+"==="+str+"==="+strLast);
content += "<b>"+i+":"+str+"<br></b>";
//当str的值等于strLast,表示已经到达最后一个链接,此时可跳出循环 if(strLast.equalsIgnoreCase(str)){ mail.setSubject("xxx平台,用户登录选择企业,遍历测试:PASS"); mail.setContent(content); mail.send(); break; }
i++;
bool = true; }catch(Exception e){ msgContent = "第"+i+"轮测试,捕获异常:<br>"+e.toString(); bool = error.ErrorHandleMsg(mail, driver, msgContent); break; }
}
return bool; } }
|
收藏
举报
TAG:
软件测试
实例
maven
Maven
Selenium
selenium
webdriver
自动化测试