Selenium之利用Excel实现参数化

说明:我是通过Workbook方式来读取excel文件的,这次以登陆界面为例

  备注:使用Workbook读取excel文件,前提是excel需要2003版本,其他版本暂时不支持

  具体步骤:

  第一步:新建一个excel文件,并且输入数据内容

  第二步:在eclipse中新建一个java class,编写获取excel文件的代码

  CODE:


import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import jxl.Sheet;

import jxl.Workbook;

/*

* 获取Excel文件的内容,使用Workbook方式来读取excel

*/

public class ExcelWorkBook {

//利用list集合来存放数据,其类型为String

private List<string> list=new ArrayList</string><string>();

//通过Workbook方式来读取excel

Workbook book;

String username;

/*

* 获取excel文件第一列的值,这里取得值为username

*/

public List</string><string> readUsername(String sourceString) throws IOException,Exception{

List</string><string> userList = new ArrayList</string><string>();

try {

Workbook book =Workbook.getWorkbook(new File(sourceFile));

Sheet sheet=book.getSheet(0);

//获取文件的行数

int rows=sheet.getRows();

//获取文件的列数

int cols=sheet.getColumns();

//获取第一行的数据,一般第一行为属性值,所以这里可以忽略

String col1=sheet.getCell(0,0).getContents().trim();

String col2=sheet.getCell(1,0).getContents().trim();

System.out.println(col1+","+col2);

//把第一列的值放在userlist中

for(int z=1;z<rows ;z++){

String username=sheet.getCell(0,z).getContents();

userList.add(username);

}

} catch (Exception e) {

e.printStackTrace();

}

//把获取的值放回出去,方便调用

return userList;

}

/*

* 获取excel文件第二列的值,这里取得值为password

*/

public List<String> readPassword(String sourceString) throws IOException,Exception{

List<string> passList = new ArrayList</string><string>();

try {

Workbook book =Workbook.getWorkbook(new File(sourceFile));

Sheet sheet=book.getSheet(0);

int rows=sheet.getRows();

for(int z=1;z<rows ;z++){

String password=sheet.getCell(1,z).getContents();

passList.add(password);

}

} catch (Exception e) {

e.printStackTrace();

}

return passList;

}

public List<String> getList(){

return list;

}

}

 第三步:新建一个TestNg Class,把excel数据填写到测试界面,具体代码如下:

  CODE:


import java.io.File;

import java.util.List;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.firefox.FirefoxProfile;

import org.testng.annotations.BeforeClass;

import org.testng.annotations.Test;

import File.ExcelWorkBook;

public class LoginCenter {

private WebDriver driver;

private String url;

String sourceFile="你文件的路径和文件名称";

@BeforeClass

public void testBefore(){

//设置firefox浏览器

FirefoxProfile file=new FirefoxProfile(new File("C:\\Users\\qinfei\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\t5ourl6s.selenium"));

driver=new FirefoxDriver(file);

url="你的测试地址";

}

@Test

public void login() throws Exception{

//初始化ExcelWorkBook Class

ExcelWorkBook excelbook=new ExcelWorkBook();

//进入到你的测试界面

driver.get(url);

driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);

try{

//把取出的username放在userlist集合里面

List<string> userList=excelbook.readUsername(sourceFile);

//把取出的password放在passlist集合里面

List</string><string> passList=excelbook.readPassword(sourceFile);

//把取出来的值,输入到界面的输入框中

int usersize=userList.size();

for(int i=0;i<usersize ;i++){

//通过css定位到username输入框

WebElement username=driver.findElement(By.cssSelector("input[name=\"j_username\"]"));

//通过css定位到password输入框

WebElement password=driver.findElement(By.cssSelector("input[name=\"j_password\"]"));

//通过xpath定位登录按钮

WebElement submit=driver.findElement(By.xpath("//button//span[contains(text(),'登录')]"));

//清除username输入框的内容

username.clear();

//把list中数据一个一个的取出来

String name=userList.get(i);

//然后填写到username输入框

username.sendKeys(name);

for(int j=0;j<passList.size();j++){

password.clear();

String pass=passList.get(j);

password.sendKeys(pass);

}

//点击登录按钮

submit.click();

driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);

//通过xpath定位登出按钮

WebElement logoutButton=driver.findElement(By.xpath("//button//span[contains(text(),'登出')]"));

logoutButton.click();

driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);

}

}catch(Exception e){

e.printStackTrace();

}

}

}

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-23 13:46:13

Selenium之利用Excel实现参数化的相关文章

如何利用Excel批量生成指定名称的文件夹

  批量生成指定名称的文件夹,很多人的是借助软件,其实利用excel加系统自带的记事本就可以做了. 如图,把指定名称的文件夹名称输入到EXCEL.同时增加一个辅助列. 在辅助列第1个单元格输入公式:="MD "&D12,并向下拖动. 注意点: 1.这里是D12单元格,你自己在操作的时候根据自己的情况.达到在所有单元格前增加"MD ". 2.MD后面还要有一个空格哦. 3.复制生成的辅助列. 4.在要批量生成文件夹的位置,新建一个txt文本. 5.在新建的一个

Access如何制作复杂报表——利用Excel输出复杂报表

access|excel 如何制作复杂报表--利用Excel输出复杂报表   如何制作复杂报表--利用Excel输出复杂报表     在读这篇文章以前首先要提醒大家,Access 本身的报表也具有很强的实用性和强大的功能,只有当你发掘了其本身全部的功能却仍不能满足你对报表的特殊要求时才请使用 Excel 输出报表.很明显,使用 Excel 输出报表第一个弱点就是必须同时打开 Access 和 Excel (当然,你得在一台机器上同时安装 Access 和 Excel),当然如果你和我一样拥有工作

如何利用Excel的Power Query快速转换数据

  在管理学生成绩的实践当中,成绩原始数据往往按学生条目记录(图1).若需要转换为以学号.姓名.学科.成绩.等第进行分列的表式效果,数据量大,逐一复制.粘贴操作显然相当繁琐.利用Excel的Microsoft Power Query加载项可实现快速转换(Excel 2016已经包含Microsoft Power Query组件,可以在"数据"选项卡直接调用,其他版本需在微软官方http://dwz.cn/2J93Jh 复制网址 下载安装). 1. 数据转换为表 打开数据表,切换到&qu

利用excel vba编程在窗体上画椅子

  利用excel vba编程在窗体上画椅子           步骤 打开excel,进入Visual Basic编辑器. 插入模块. 模块编程.在模块1内编程,声明4个函数,并编写一句显示窗体的程序--"画". 插入窗体. 调整窗体大小.height属性调为399.75,width属性调为219.75. 窗体编程.双击窗体进入编程界面,编写窗体单击事件触发的程序,调用模块1里声明的1个结构.4个函数编写程序.为图中每个点写好坐标. 关闭vbe,启动宏. 执行宏. 执行宏--&quo

利用excel vba编程在窗体上画一个六边形

  利用excel vba编程在窗体上画一个六边形.这篇教程是向朋友们分享利用excel vba编程在窗体上画一个六边形方法,教程很不错,适合新手来学习,推荐大家来看看吧. 步骤1 打开excel表格,进入vbe窗口. 插入模块. 在模块1内编程,声明4个函数.1个结构,并编写一句显示窗体的程序--"画". 插入窗体. 这是插入的窗体,调整大小如图. 双击窗体进入编程界面,编写窗体单击事件触发的程序,调用模块1里声明的4个函数.1个结构编写程序. 关闭vbe窗口,在excel表格界面启

利用Excel的数据制作一张图表

  大家都在用Excel,深知它的重要性,如果我们对它的功能熟悉了,掌握的使用它的技巧,那么用起来是十分方便的,那么怎么样用Excel中已经计算好的数据来制作一张图表呢?或是比例图,或是柱状图,下面我来介绍一下. 方法/步骤 1.首先,你得打来一张Excel工作表,计算好应该计算的数据,或者是比例啊,或者是及格率啊等等其他的东西,不论怎么样,都要有数据,才能制作出表格. 2.利用各种Excel技巧和方法,或者公式函数,计算出你所要计算的数据,再将你的计算出来的数据放在一边,这是.时需要选中该数据

利用Excel突出显示单元格规则某一类具有共性的单元格突出显示

  突出显示单元格规则,可以通过改变颜色.字形.特殊效果等改变格式的方法使得某一类具有共性的单元格突出显示.例如,在一份工资表中,将所有大于50000的工资数额用红色字体突出.下面小编就为大家介绍利用Excel突出显示单元格规则某一类具有共性的单元格突出显示方法,希望能对大家有所帮助! 工具/原料 Excel 2007 方法/步骤 1.以下图工作表为例,要求将表格中大于1000的数据用黄色.加粗.加删除线的格式标出. 2.选择所有数据所在单元格区域.在"开始"选项卡上的"样式

利用Excel.Application object’s RegisterXLL() method加载dll

本文讲的是利用Excel.Application object's RegisterXLL() method加载dll,Ryan Hanson‏@ryHanson最近分享了一个技巧,利用Excel.Application object's RegisterXLL()能够加载dll.我对其分享的POC作了测试,接着做了扩展,添加功能实现远程下载执行,并且分析该方法相关的利用技巧,详细介绍脚本开发中的细节. 0x01 简介 本文将要介绍如下内容: · POC测试 · 添加功能实现远程下载执行 · 扩

excel-selenium2 在C#中如何使用Excel 进行参数化??(求具体代码)

问题描述 selenium2 在C#中如何使用Excel 进行参数化??(求具体代码) selenium2中读取Excel表格中的row.column的数据,进行参数化!在代码中如何实现???