“天街小雨润如酥,草色遥看近却无。最是一年春好处,绝胜烟柳满皇都。”读一首古诗,心情也随之平静下来

一个完整的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 自动化测试

 

评分:0

我来说两句

Open Toolbar