1、Selenium自动化测试脚本 个性化处理和优化,目录,WebDriver 获取操作浏览器 CreateWebDriver.java QuitWebDriver.java 具体业务操作 MobileOpOrderNew.java 邮件通知或告警 Mail.java SmtpAuth.java 参数化 ExcelParam.java orderparameter.xls,脚本处理,WebDriver 获取操作浏览器 CreateWebDriver.java public class CreateWebDriver private WebDriver driver;public WebDriver
2、 GetWebDriver(String exploreType)if (exploreType.equals(“ie“)try /启动IEDriverServer.exe,调起浏览器,IE浏览器必须用到此程序System.setProperty(“webdriver.ie.driver“, “C:Program FilesInternet ExplorerIEDriverServer.exe“); /new一个InternetExplorerDriver对象实例driver = new InternetExplorerDriver(); /设置等待时间,以确保页面正常加载driver.man
3、age().timeouts().implicitlyWait(30, TimeUnit.SECONDS) ; catch(IOException e)System.out.println(“程序抛出IOException异常“);catch(SessionNotFoundException se)System.out.println(“程序抛出SessionNotFoundException异常,页面没有正常启动“); return driver;,脚本处理,WebDriver 获取操作浏览器 CreateWebDriver.java else if(exploreType.equals(“
4、firefox“) try /new一个FirefoxDriver对象实例driver=new FirefoxDriver(); /设置等待时间,以确保页面正常加载driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS) ; catch(IOException ie) System.out.println(“程序抛出IOException异常,请检查原因“); return driver; elsethrow new IllegalStateException(“selected explorer is not suppor
5、ted:WebDriver不支持您所使用的浏览器“); ,WebDriver 获取操作浏览器 QuitWebDriver.java public class QuitWebDriver public void quitWebDriver(WebDriver driver)Set windows=driver.getWindowHandles();for(String a:windows)driver.switchTo().window(a).close();try Thread.sleep(15);driver.quit(); catch (InterruptedException ex) S
6、ystem.out.println(“程序抛出InterruptedException异常“); ,脚本处理,具体业务操作 MobileOpOrderNew.java private boolean errorHandle(WebDriver driver,String errorMsg)String bodyText = driver.findElement(By.cssSelector(“BODY“).getText();if(bodyText.matches(“sS*HTTP 500 内部服务器错误sS*$“)results = “失败“;System.out.println(“用户下单
7、失败,开始发送邮件“);/设置邮件标题mail.setSubject(“96515家庭服务网自动化测试用例:移动客服坐席平台下单,测试结果:“+results); /设置邮件内容 mail.setContent(“自动化用例执行时间为:“+getStringDateShort()+“+“本用例主要测试点为:“+“1.登录客服坐席平台 “ +“2.输入关键字“移动“搜索企业,然后下单 “+“3.输入相关资料,完成下单 “+“=“+“+errorMsg+“+“页面报错500,可能服务器宕机,请检查原因,当前页面返回的url链接为:“+driver.getCurrentUrl()+“当前页面的内容为
8、:“+driver.getPageSource()+“);mail.send(); System.out.println(“!errorHandle方法中页面报错500,请检查服务器!“);,脚本处理,具体业务操作 MobileOpOrderNew.java else if(bodyText.matches(“sS*404sS*$“)results = “失败“;System.out.println(“errorHandle方法中用户下单失败,开始发送提醒邮件“);/设置邮件标题mail.setSubject(“96515家庭服务网自动化测试用例:移动客服坐席平台下单,测试结果:“+resul
9、ts); /设置邮件内容 mail.setContent(“自动化用例执行时间为:“+getStringDateShort()+“+“本用例主要测试点为:“+“1.登录客服坐席平台 “ +“2.输入关键字“移动“搜索企业,然后下单 “+“3.输入相关资料,完成下单 “+“=“+“+errorMsg+“+“页面报错404,可能页面丢失,请检查原因,当前页面返回的url链接为:“+driver.getCurrentUrl()+“当前页面的内容为:“+driver.getPageSource()+“);mail.send(); System.out.println(“!errorHandle方法中页
10、面报错404,可能页面丢失,请检查原因!“);,脚本处理,具体业务操作 MobileOpOrderNew.java elseresults = “失败“;System.out.println(“errorHandle方法中页面报错404,开始发送提醒邮件“);/设置邮件标题mail.setSubject(“96515家庭服务网自动化测试用例:移动客服坐席平台下单,测试结果:“+results); /设置邮件内容 mail.setContent(“自动化用例执行时间为:“+getStringDateShort()+“+“本用例主要测试点为:“+“1.登录客服坐席平台 “ +“2.输入关键字“移动
11、“搜索企业,然后下单 “+“3.输入相关资料,完成下单 “+“=“+“+errorMsg+“+“请检查,当前页面返回的url链接为:“+driver.getCurrentUrl()+“当前页面的title为:“+driver.getTitle()+“当前页面的内容为:“+driver.getPageSource()+“);/发送邮件mail.send(); System.out.println(“!errorHandle方法中出现500和404以外的问题,请检查!“);return false; ,脚本处理,邮件通知或告警 Mail.javapublic HashMap send() Hash
12、Map map=new HashMap(); map.put(“state“, “success“); String message=“邮件发送成功!“; Session session=null; Properties props = System.getProperties(); props.put(“mail.smtp.host“, smtpServer); if(ifAuth) /服务器需要身份认证 props.put(“mail.smtp.auth“,“true“); SmtpAuth smtpAuth=new SmtpAuth(username,password); session
13、=Session.getDefaultInstance(props, smtpAuth); else props.put(“mail.smtp.auth“,“false“); session=Session.getDefaultInstance(props, null); session.setDebug(true); Transport trans = null;,脚本处理,邮件通知或告警 Mail.javatry Message msg = new MimeMessage(session); try Address from_address = new InternetAddress(fr
14、om, displayName); msg.setFrom(from_address); catch(java.io.UnsupportedEncodingException e) e.printStackTrace(); Address address = null;if (to!=null)address = new InternetAddressto.length;for (int i=0; ito.length; i+)String s=toi;addressi = new InternetAddress(s);,脚本处理,邮件通知或告警 Mail.javamsg.setRecipie
15、nts(Message.RecipientType.TO,address);msg.setSubject(subject); Multipart mp = new MimeMultipart(); MimeBodyPart mbp = new MimeBodyPart(); mbp.setContent(content.toString(), “text/html;charset=gb2312“); mp.addBodyPart(mbp); if(!file.isEmpty()/有附件 Enumeration efile=file.elements(); while(efile.hasMore
16、Elements() mbp=new MimeBodyPart(); filename=efile.nextElement().toString(); /选择出每一个附件名 FileDataSource fds=new FileDataSource(filename); /得到数据源 mbp.setDataHandler(new DataHandler(fds); /得到附件本身并至入BodyPart mbp.setFileName(fds.getName(); /得到文件名同样至入BodyPart mp.addBodyPart(mbp); file.removeAllElements();
17、msg.setContent(mp); /Multipart加入到信件 msg.setSentDate(new Date(); /设置信件头的发送日期,脚本处理,邮件通知或告警 Mail.java/发送信件 msg.saveChanges(); trans = session.getTransport(“smtp“); trans.connect(smtpServer, username, password); trans.sendMessage(msg, msg.getAllRecipients(); trans.close(); catch(AuthenticationFailedExce
18、ption e) map.put(“state“, “failed“); message=“邮件发送失败!错误原因:n“+“身份验证错误!“; e.printStackTrace(); catch (MessagingException e) message=“邮件发送失败!错误原因:n“+e.getMessage(); map.put(“state“, “failed“); e.printStackTrace(); Exception ex = null; if (ex = e.getNextException() != null) System.out.println(ex.toStrin
19、g(); ex.printStackTrace(); System.out.println(“n提示信息:“+message); map.put(“message“, message); return map; ,脚本处理,邮件通知或告警 SmtpAuth.javapublic class SmtpAuth extends javax.mail.Authenticator private String username,password; public SmtpAuth(String username,String password) this.username = username; thi
20、s.password = password; protected javax.mail.PasswordAuthentication getPasswordAuthentication() return new javax.mail.PasswordAuthentication(username,password); ,脚本处理,参数化 ExcelParam.javapublic class ExcelParam /创建getParameterFromExcel方法,根据行和列获取excel中表格的内容public String getParameterFromExcel(File excel
21、File,int rowNum,int colNum) /定义String对象,用于存取读取到的excel表格中的内容,便于返回String str=“; /定义一个工作簿Workbook rwb = null;/定义一个CellCell cell = null;/ 创建输入流try InputStream stream = new FileInputStream(excelFile);/ 获取Excel文件对象rwb = Workbook.getWorkbook(stream);/ 获取文件的指定工作表 默认的第一个Sheet sheet = rwb.getSheet(0);/通过行和列定位
22、需要读取的单元格,并且赋值给strcell = sheet.getCell(colNum,rowNum);str = cell.getContents(); catch (FileNotFoundException e) / TODO Auto-generated catch blockSystem.out.println(“FileNotFoundException“);catch (BiffException e) / TODO Auto-generated catch blockSystem.out.println(“BiffException“); catch (IOException e) / TODO Auto-generated catch blockSystem.out.println(“IOException“);return str; ,脚本处理,pom.xmljunitjunit4.10testorg.seleniumhq.seleniumselenium-java2.31.0,脚本处理,pom.xmljavax.mailmail1.5.0-b01net.sourceforge.jexcelapijxl2.6.12org.apache.poipoi-excelant3.9,脚本处理,Q&A,