自动化测试中用到的一些功能类(纯手工整理)
来源:互联网 发布:js 定义json对象集合 编辑:程序博客网 时间:2024/05/12 06:00
1、WebDriver处理一些弹窗
import java.util.Set;import org.openqa.selenium.Alert;import org.openqa.selenium.By;import org.openqa.selenium.NoAlertPresentException;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebDriverException;import org.openqa.selenium.ie.InternetExplorerDriver;public class AlertOperate {static WebDriver dr = new InternetExplorerDriver();public static void main(String args[]) throws InterruptedException{dr.get("www.baidu.com");dr.findElement(By.id("lb")).click();try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}tanchukuang();}//处理潜在的1个alert(javascript弹出框)public boolean dealPotentialAlert(WebDriver driver,boolean option) {boolean flag = false;try {Alert alert = driver.switchTo().alert();if (null == alert)throw new NoAlertPresentException();try {if (option) {alert.accept();System.out.println("Accept the alert: " + alert.getText());} else {alert.dismiss();System.out.println("Dismiss the alert: " + alert.getText());}flag = true;} catch (WebDriverException ex) {if (ex.getMessage().startsWith("Could not find"))System.out.println("There is no alert appear!");elsethrow ex;}} catch (NoAlertPresentException e) {System.out.println("There is no alert appear!");}return flag;}//处理非JS弹窗public static boolean testNewWindow(){//当前窗口句柄 String currentHandle = dr.getWindowHandle();//得到所有窗口的句柄 Set<String> handles = dr.getWindowHandles(); handles.remove(currentHandle); if (handles.size() > 0) { try{ dr.switchTo().window(handles.iterator().next()); //dr.switchTo().window(dr.getWindowHandles().iterator().next()); return true; }catch(Exception e){ System.out.println(e.getMessage()); return false; } } System.out.println("Did not find window"); return false;}//一般弹出窗口public static void tanchukuang() throws InterruptedException{//得到所有窗口Set<String> allWindowsId = dr.getWindowHandles();//通过查找页面内容得到新的窗口for(String windowId : allWindowsId){dr.switchTo().window(windowId);Thread.sleep(1000);dr.findElement(By.id("TANGRAM__PSP_10__userName")).sendKeys("test");//第一个按钮是确定按钮//dr.findElement(By.xpath("//button[@type='button']")).click();//System.out.println(dr.switchTo().window(windowId).getTitle());break;}}}
2、一些数据类型转换
public class Chanage {//int to Stringpublic static String IntToString(int i){String s = Integer.toString(i);return s;}//String to intpublic static int StringToInt(String s){int i = Integer.parseInt(s);return i;}}
3、和数据库交互
import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.mysql.jdbc.Connection;class ConnMySQL {Connection conn;Statement stmt;ResultSet rs1;int rs2;public void connection() throws Exception{String db = "meeting";String driver = "com.mysql.jdbc.Driver";String url = "jdbc:mysql://172.16.3.9:3306/"+db;String uname = "admin";String pwd = "itserver";//加载驱动Class.forName(driver);//连接数据库conn = (Connection) DriverManager.getConnection(url, uname, pwd);if(!conn.isClosed()){//System.out.println("连接成功!");}}//执行查询操作返回ResultSet类型public void executeSql0(String sql) throws SQLException{//创建语句对象,用来执行sql语句stmt = conn.createStatement();//执行sqlrs1 = stmt.executeQuery(sql);while(rs1.next()){String name = rs1.getString("meetingId");String subject = rs1.getString("e164");String regionName = rs1.getString("state");System.out.println(name+" "+subject+" "+regionName);}rs1.close();}//执行查询操作返回ResultSet类型public void executeSql1(String sql) throws SQLException{//创建语句对象,用来执行sql语句stmt = conn.createStatement();//执行sqlrs1 = stmt.executeQuery(sql);while(rs1.next()){String id = rs1.getString("id");String subject = rs1.getString("subject");String startTime = rs1.getString("startTime");String endTime = rs1.getString("endTime");String organiger = rs1.getString("organiger");String status = rs1.getString("status");System.out.println(id+" "+subject+" "+startTime+" "+endTime+" "+organiger+" "+status);}rs1.close();conn.close();}//执行增删改操作返回int类型public void executeSql2(String sql) throws SQLException{stmt = conn.createStatement();rs2 = stmt.executeUpdate(sql);stmt.close();conn.close();}}
4、创建EXCEL
// 生成Excel的类 import java.io.File;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class CreateExcel{ public static void main(String args[]){ //Create_Excel c_e = new Create_Excel(); //c_e.createexcel(); //System.out.printf("success!!"); }}class Create_Excel{public void createexcel(){try{ // 打开文件 WritableWorkbook book = Workbook.createWorkbook(new File("test.xls")); // 生成名为“第一页”的工作表,参数0表示这是第一页 WritableSheet sheet = book.createSheet("第一页",0); // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0) // 以及单元格内容为test Label label1 = new Label(0,0,"test"); Label label2 = new Label(1,1,"test"); // 将定义好的单元格添加到工作表中 sheet.addCell(label1); sheet.addCell(label2); /* * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为555 */ jxl.write.Number number = new jxl.write.Number(1,0,555); sheet.addCell(number); // 写入数据并关闭文件 book.write(); book.close(); }catch(Exception e){ System.out.println(e); }}}
5、读取EXCEL
// 读取Excel的类 import java.io.File;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;/* * 参数1:第几个工作表 * 参数2:第几列 * 参数3:第几行 * 参数都从0开始 * 返回值:当前单元格的数据 */public class ReadExcel{static String result;static Workbook book;static Sheet sheet; public static void main(String args[]){ //readExcel(0,1,0); excelNum(0); } public static String readExcel(int no,int row,int line){ try{ book = Workbook.getWorkbook(new File("test.xls")); // 获得第一个工作表对象 sheet = book.getSheet(no); // 得到第一列第一行的单元格 Cell cell1 = sheet.getCell(row,line); result = cell1.getContents(); System.out.println(result); book.close(); }catch(Exception e){ System.out.println(e); }return result; } //返回行数 public static int excelNum(int no){ int col = 0; int row = 0; try{ book = Workbook.getWorkbook(new File("test.xls")); sheet = book.getSheet(no); //得到行数和列数 col = sheet.getColumns();//列数 row = sheet.getRows();//行数 System.out.println(col+" 列"); System.out.println(row+" 行"); book.close(); }catch(Exception e){ System.out.println(e); } return row; }}
6、更新EXCEL
import java.io.File;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class UpdateExcel{ public static void main(String args[]){ try{ // Excel获得文件 Workbook wb = Workbook.getWorkbook(new File("test.xls")); // 打开一个文件的副本,并且指定数据写回到原文件 WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"),wb); // 添加一个工作表 WritableSheet sheet = book.createSheet("第二页",1); sheet.addCell(new Label(0,0,"第二页的测试数据")); book.write(); book.close(); }catch(Exception e){ System.out.println(e); } } }
7、WebDriver判断元素是否存在
import java.util.concurrent.TimeUnit;import org.openqa.selenium.By;import org.openqa.selenium.NoSuchElementException;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.ie.InternetExplorerDriver;/* * 判断一个元素是否存在 */public class ElementIsExsit {//查找一个元素是否存在public boolean isElementExsit(WebDriver driver, By locator) {boolean flag = false;try {WebElement element=driver.findElement(locator);//flag = true;flag=null!=element;System.out.println("元素: " + locator.toString()+ " 存在!");}catch(NoSuchElementException e) {System.out.println("元素: " + locator.toString()+ " 不存在!");flag = false;}return flag;}//如何使用上面的方法public void test(){WebDriver driver = new InternetExplorerDriver();//显性等待driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);By locator = By.id("id");isElementExsit(driver,locator);}}
8、java下载图片
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.net.URI;import java.net.URISyntaxException;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;public class Movision_verifyImage {private static HttpClient hc = new DefaultHttpClient();public static void main(String args[]) throws ClientProtocolException, IOException, ParseException, URISyntaxException{//获取图片验证码页面随机参数(当前时间)long date = new Date().getTime();System.out.println(date);List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("random",Long.toString(date)));get("http://172.16.3.6/admin/portalVerifyImage",params);}/* * 带参数的GET请求 * */public static void get(String url,List<NameValuePair> params) throws ParseException, UnsupportedEncodingException, IOException, URISyntaxException{//get请求HttpGet httpget = new HttpGet(url);//设置参数String str = EntityUtils.toString(new UrlEncodedFormEntity(params));httpget.setURI(new URI(httpget.getURI().toString()+"?"+str));//发送请求HttpResponse re = hc.execute(httpget);//获取相应实体HttpEntity entity = re.getEntity();if (entity != null && entity.isStreaming()) {File storeFile = new File("F:\\test.jpg"); FileOutputStream fos = new FileOutputStream(storeFile); // 将取得的文件文件流写入目标文件 InputStream is = entity.getContent(); byte[] b = new byte[1024]; int j = 0; while ((j = is.read(b)) != -1) { fos.write(b, 0, j); } fos.flush(); fos.close(); } else { System.out.println("[" + url + "] 未找到."); return; } //关闭连接hc.getConnectionManager().shutdown();}}
9、java远程登录linux并执行命令
import java.io.BufferedReader;import java.io.FileWriter;import java.io.InputStream;import java.io.InputStreamReader;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.Session;import ch.ethz.ssh2.StreamGobbler;/* * 远程调用linux下的vmstat命令,并将结果完整写入文件中 */public class SSHTest {/** * @param args * @throws IOException *//* * 主机地址、端口、用户名、密码 */static String hostName = "172.16.3.9";static int port = 2222;static String userName = "root";static String pwd = "kedats";public static void main(String[] args) throws Exception {// TODO Auto-generated method stubSystem.out.println("开始连接主机");Connection conn = new Connection(hostName, port);conn.connect();boolean isdenglu = conn.authenticateWithPassword(userName, pwd);if (isdenglu) {System.out.println("ssh2登陆成功");} else {System.out.println("登陆失败");}//System.out.println("当前目录:");Session ses = conn.openSession();ses.execCommand("vmstat 2");InputStream stdout = new StreamGobbler(ses.getStdout());BufferedReader br = new BufferedReader(new InputStreamReader(stdout));FileWriter fw = new FileWriter("F:\\vmstat.txt"); while (true) { String line = br.readLine(); if (line == null) break; System.out.println(line); fw.write(line+"\r\n",0,line.length()+2); fw.flush();// OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("data2.txt"));// osw.write(line,0,line.length());// osw.flush();// PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);// pw.println(line); } System.out.println("运行结果:"+ses.getExitStatus());//关闭文件fw.close();ses.close();conn.close();}}
10、java将控制台打印写入日志文件
import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;public class ToLog {static GregorianCalendar time = new GregorianCalendar();//int year = time.get(Calendar.YEAR);//得到日期的年份//int day = time.get(Calendar.DAY_OF_MONTH);//得到日期的天//int month = time.get(Calendar.MONTH)+1;//得到日期的月份//int weekDay = time.get(Calendar.DAY_OF_WEEK);//得到日期为星期几//int weekOfYear = time.get(Calendar.WEEK_OF_YEAR);//得到日期为年的第几周//int weekOfMonth = time.get(Calendar.WEEK_OF_MONTH);//得到日期为月的第几周private static final String getToday = time.get(Calendar.YEAR)+"-"+(time.get(Calendar.MONTH)+1)+"-"+time.get(Calendar.DAY_OF_MONTH)+"-";private static final String filePath = "C:\\Documents and Settings\\Administrator\\workspace\\Movision_script\\logs\\"+getToday+"log.html";//写入文件public void toLog(String message){StackTraceElement stack[] = (new Throwable()).getStackTrace();StackTraceElement s = stack[1];String headerMessage = s.getClassName()+"."+s.getMethodName()+"()"+"★LineNum:"+s.getLineNumber()+"<br />★Message: ";headerMessage = addDateTimeHeader(headerMessage);message = headerMessage + message + "<br />========================================================================================================================<br /><br />";FileWriter fw = null;File file = null;try{file = new File(filePath);fw = new FileWriter(file,true);fw.write(message);}catch(IOException ie){ie.printStackTrace();}finally{try{fw.close();}catch(IOException ie){ie.printStackTrace();}}}@SuppressWarnings("deprecation")public String addDateTimeHeader(String headerMessage) {String dateTimeHeader = new Date().toLocaleString()+"★";return dateTimeHeader += headerMessage;}//public static void main(String args[]){//ToLog log = new ToLog();//String message = "这只是测试";//log.toLog(message);//}}
写分享这么多吧~各位,晚安!
- 自动化测试中用到的一些功能类(纯手工整理)
- 手工测试与自动化测试的优缺点
- 接口自动化测试项目的一些知识整理
- 关于功能自动化测试的一些想法(持续更新ing)
- 自动化测试与手工测试
- 自动化测试PK手工测试
- 手工测试和自动化测试
- 手工测试vs自动化测试
- 工作——自动化测试中用到的SQL server查询语句的格式调整
- 软件手工测试和自动化测试的比较
- 自动化测试和手工测试的应用场合对比
- 关于手工测试与自动化测试关系的讨论
- 手工测试和自动化测试各自适用的场合
- 毕业设计中用到的一些
- 纯手工编写的PE可执行程序(修正原文的一些错误)
- 纯手工自己积累的一些小的技巧
- 测试中用到的工具
- 测试中用到的工具
- 【深入QT】信号槽机制浅析
- Linux入门基础 #4:文件系统
- jQuery选择器引擎和Sizzle介绍
- ArcgisOpr CXX0030
- “Cache-主存”和“主存和辅存”的区别
- 自动化测试中用到的一些功能类(纯手工整理)
- 本地存储策略之cookie
- 利用XMind帮助阅读Linux内核源代码
- Eclipse快捷键
- git学习 #1:git起步
- jquery没有相关操作cookie的函数,但是有一个cookie插件
- ArrayList利用迭代器Iterator遍历方法实现数据(新闻)的删除、添加、显示功能例子
- request 和 response
- msvcr90.dll 异常错误该从哪着手排查呢?