【发布时间】:2014-06-10 08:17:56
【问题描述】:
我对 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");
}
}
【问题讨论】:
-
尝试将“distID,”asmtId,“studID”作为参数传递给“Administration()”函数..
-
您好 Praveen,我在管理功能中参数化了“distId”、“asmtID”、“StudID”。它取值但登录后不选择任何值。我已删除 LoginData 方法,但它对我不起作用。
-
嗨,你是对的。当您调用“Adminstration()”时,将相同的参数传递给它,例如“Administration(distId, asmtId, studId)”。这将使变量即使在“administration()”中也可用。
-
我只做了完全相同的事情。但我担心的是登录后我必须选择一些值,但我无法选择这些值。它适用于登录功能。 Bz 在 getExcelMethod() 中只发送登录参数。我没有得到我必须参数索引和值的确切位置。请帮我解决这个问题。
-
当然,我必须复制它才能理解/评论它。你能分享/展示你的 excel 表的样子吗?
标签: excel selenium-webdriver testng testng-dataprovider