我是Selenium WebDriver的新手。我编写了代码,通过使用数据提供程序从Excel工作表中读取登录凭据和值。 它通过第一个设置数据(登录功能)完美地为我提供绿色状态栏。
在我的应用程序中,登录后,我想通过从同一个Excel工作表发送索引和选择(在管理方法中)来选择值,但我无法读取值。 对于硬编码值,它的工作正常。
任何人都可以请你知道如何写它。 二手Excel表格:
以下是我的代码:
import java.io.File;
import jxl.Sheet;
import jxl.Workbook;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.junit.AfterClass;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
//import org.testng.annotations.BeforeClass;
public class TestCase {
String[][] tabArray = null;
Workbook workbk;
Sheet sheet;
int rowCount, colCount;
String sheetPath = "test/Resources/Data/Auto_Increment.xls";
WebDriver login;
//int eRow, eCol, sRow = 0, sCol = 0;
@BeforeSuite
public void setUp(){
login = new FirefoxDriver();
login.get("http://etazo.tangosoftware.com");
System.out.println("select the etazo web link..");
}
@DataProvider
public Object[][] getLoginData() throws Exception {
Object[][] retObjArr = getExcelData(sheetPath, "Sheet1");
System.out.println("getData function executed!!");
return retObjArr;
}
// Excel API to read test data from excel workbook
public String[][] getExcelData(String xlPath, String shtName)
throws Exception {
Workbook workbk = Workbook.getWorkbook(new File(xlPath));
Sheet sht = workbk.getSheet(shtName);
rowCount = sht.getRows();
colCount = sht.getColumns();
tabArray = new String[rowCount][colCount - 2];
System.out.println("erow: " + rowCount);
System.out.println("ecol: " + colCount);
for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < 3; j++) {
tabArray[i][j] = sht.getCell(j, i).getContents();
}
}
return (tabArray);
}
@Test(dataProvider = "getLoginData")
public void LoginData(String distID, String asmtId, String studID)
throws InterruptedException, BiffException, IOException {
Administartion(distID, asmtId, studID);
}
public void Administartion(String distID, String asmtId, String studID)
throws BiffException, IOException {
Workbook workbk = Workbook.getWorkbook(new File(sheetPath));
Sheet sht = workbk.getSheet("Sheet1");
int currRow = sht.findCell(studID).getRow();
//login.findElement(By.xpath("//*[@id='question-"+sIndex+"']/bubbles/circle["+sValue+"]")).click();
System.out.println(sht.getCell(3, currRow).getContents() + " Index ");
System.out.println(sht.getCell(4, currRow).getContents() + " Answer selection");
}
}
答案 0 :(得分:0)
编辑了代码。现在这将获取所有记录。
你的excel表应该看起来像这样:
import java.io.File;
import java.io.IOException;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestClass {
String[][] tabArray = null;
Workbook workbk;
Sheet sheet;
int rowCount, colCount;
String sheetPath = "D:\\Download\\Auto_Increment.xls";
// Excel API to read test data from excel workbook
public String[][] getExcelData(String xlPath, String shtName)
throws Exception {
Workbook workbk = Workbook.getWorkbook(new File(xlPath));
Sheet sht = workbk.getSheet(shtName);
rowCount = sht.getRows();
colCount = sht.getColumns();
tabArray = new String[rowCount][colCount - 2];
System.out.println("erow: " + rowCount);
System.out.println("ecol: " + colCount);
for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < 3; j++) {
tabArray[i][j] = sht.getCell(j, i).getContents();
}
}
return (tabArray);
}
@DataProvider
public Object[][] getLoginData() throws Exception {
Object[][] retObjArr = getExcelData(sheetPath, "Sheet1");
System.out.println("getData function executed!!");
return retObjArr;
}
@Test(dataProvider = "getLoginData")
public void LoginData(String distID, String asmtId, String studID)
throws InterruptedException, BiffException, IOException {
Administartion(distID, asmtId, studID);
}
public void Administartion(String distID, String asmtId, String studID)
throws BiffException, IOException {
Workbook workbk = Workbook.getWorkbook(new File(sheetPath));
Sheet sht = workbk.getSheet("Sheet1");
int currRow = sht.findCell(studID).getRow();
System.out.println(sht.getCell(3, currRow).getContents() + " Index ");
System.out.println(sht.getCell(4, currRow).getContents() + " Answer selection");
}
}
答案 1 :(得分:0)
使用的依赖项:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
代码在这里读取xlsx文件:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestDataProvider {
static File resultFile = new File(“PATH OF THE EXCEL”);
public static DataFormatter formatter = new DataFormatter();
@Test(dataProvider = "readExcelFile")
public static void test1(String slNum, String name, String Address, String email) throws IOException {
System.out.println(slNum+" "+ name+" "+Address + " "+email);
FURTHER CODE GOES HERE
}
@DataProvider
public static Object[][] readExcelFile() throws InvalidFormatException, IOException {
FileInputStream fis = new FileInputStream(resultFile);
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sh = wb.getSheet(“SHEET NAME”);
System.out.println(sh.getPhysicalNumberOfRows());
System.out.println(sh.getRow(0).getPhysicalNumberOfCells());
int RowNum = sh.getPhysicalNumberOfRows();
int ColNum = sh.getRow(0).getPhysicalNumberOfCells();
String[][] xlData = new String[RowNum-1][ColNum];
for (int i = 0; i < RowNum - 1; i++)
{
XSSFRow row = sh.getRow(i + 1);
for (int j = 0; j < ColNum; j++)
{
if (row == null)
xlData[i][j] = "";
else {
XSSFCell cell = row.getCell(j);
if (cell == null)
xlData[i][j] = "";
else {
String value = formatter.formatCellValue(cell);
xlData[i][j] = value.trim();
}
}
}
}
return xlData;
}
}