2016-04-19 2 views
0

Я хочу вернуть значения, присутствующие в файле excel, но возвращает значения, такие как [[Ljava.lang.String; @ 490ab905. Данные не возвращают значения, такие как имя пользователя. Используется поставщик jxl и данных. Даже я не очень хорошо знаю поставщика данных. Пожалуйста, помогите мне получить точные значения от excel.Невозможно вернуть значения, присутствующие в файле excel.

Ниже мой код:

public class excelUtil { 

    // public String suiteFileName = "/suite.xls"; 
    String testDatafile = "/src/testData/testdata.xls"; 
    // public String testDatafile = "/testdata/Testdata.xls"; 

    @DataProvider 
    public Object[][] getTestData(String sheetName) 
    { 



    //String getTestData(String sheetName, int rowNumber, int colNum) { 
     // Read Excel 

     String path = System.getProperty("user.dir") + testDatafile; 

     Workbook w = null; 
     File inputWorkbook = new File(path); 
     // Open workbook 
     try { 
      w = Workbook.getWorkbook(inputWorkbook); 
     } catch (BiffException | IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     // Get the first sheet 
     Sheet sheet = w.getSheet(sheetName); 
     //Loop over first 10 column and lines 
     // Get the first sheet 

       //Loop over first 10 column and lines 
       int rowCount = sheet.getRows(); 
       int coulumnCount = sheet.getColumns(); 

       Object[][] data = new String[rowCount-1][coulumnCount]; 

       for(int i=1;i<rowCount;i++) 
       { 
        Cell cell = sheet.getCell(0, i); 
        String value = cell.getContents().toString(); 
        System.out.println(value); 
        data[i-1][0]= value.toString(); 
       System.out.println(data[i-1][0]); 
        cell = sheet.getCell(1, i); 
        value = cell.getContents().toString(); 

        data[i-1][1]= value.toString(); 

       } 
       w.close(); 
       //System.out.println(value); 
       System.out.println(data); 
       return data; 
      } 
    public static WebDriver driver ; 
    @Test(dataProvider = "getTestData") 
    public void OrpakLoginTest(Object username, Object password) { 
     driver = new FirefoxDriver(); 
     driver.get("http:orpakqa.commdel.com"); 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 

     Loginelements lg = new Loginelements(); 


     WebElement element_UserName = lg.getOrpakUserNameField(driver); 


     element_UserName.sendKeys(username.toString()); 
     WebElement element_Password = lg.getOrpakPasswordField(driver); 

     element_Password.sendKeys(password.toString()); 
     //WebElement element_LoginBtn = lg.getOrpakLoginButton(driver); 
     //element_LoginBtn.click(); 

    } 
+0

Попробуйте использовать .toString() в возвращаемом значении –

+0

Здравствуй. Shubham jain Я пробовал то же самое, но результат такой же, как и у – naman

+0

. Каковы ваши данные внутри листа, который вы хотите получить, можете опубликовать образцы данных, похожие на те же –

ответ

0

Использование POI баночки

https://poi.apache.org/download.html

Ниже код работает для меня: -

public String getXLcellValue(String xlpath, String sheetName, int rowNum, int cellNum) 
    { 
     try{ 
     FileInputStream fis=new FileInputStream(xlpath); 

     Workbook wb=WorkbookFactory.create(fis); 

     Log.info("Get the value from the cell(getXLcellValue)"); 

     return wb.getSheet(sheetName).getRow(rowNum).getCell(cellNum).getStringCellValue(); 

    } 
    catch(Exception ex) 
    { 
     Log.info("Error in getXLcellValue ="+ ex.getMessage()); 
    } 
    return ""; 
} 

xlpath = путь первенствует файла в вашей системе

SheetName = имя листа в Excel файл

строка = номер строки имя пользователя или пароль

cellnum = номер ячейки пользователя или пароль

+0

, но я также хочу использовать dataprovider. – naman

0

Вы можете обновить свой код, как показано ниже и я надеюсь, что это решение будет работать для вас:

import java.io.File; 
import jxl.Sheet; 
import jxl.Workbook; 
import org.openqa.selenium.By; 
import org.testng.annotations.BeforeMethod; 
import org.testng.annotations.DataProvider; 
import org.testng.annotations.Test; 

public class ProApp extends OneClass { 

    Workbook wb; 
    Sheet sh1; 
    int numrow; 
    String username; 
    String password; 

    @BeforeMethod 
    public void oneTimeSetUp() throws InterruptedException { 

    driver.manage().window().maximize(); 
    driver.get("Testing.com"); 
    Thread.sleep(1000); 
    driver.findElement(By.xpath("//*[@id='app']/div/main/section/ul/li[1]/a")).click(); 
    Thread.sleep(1000); 

    } 

    @Test(dataProvider="testdata") 
    public void testFireFox(String uname,String password1) throws InterruptedException 

    { 

    driver.findElement(By.xpath("//input[@name='username']")).clear(); 
    Thread.sleep(1000); 
    driver.findElement(By.xpath("//input[@name='username']")).sendKeys(uname); 
    Thread.sleep(1000); 
    driver.findElement(By.xpath("//input[@name='password']")).clear(); 
    Thread.sleep(1000); 
    driver.findElement(By.xpath("//input[@name='password']")).sendKeys(password1); 
    Thread.sleep(1000); 
    driver.findElement(By.xpath("//button[@name='loginButton']")).click(); 
    Thread.sleep(1000); 
    } 

    @DataProvider(name="testdata") 
    public Object[][] TestDataFeed(){ 

    try { 

    // load workbook 
    wb=Workbook.getWorkbook(new File("C://File//Book2.xls")); 

    // load sheet in my case I am referring to first sheet only 
    sh1= wb.getSheet(0); 

    // get number of rows so that we can run loop based on this 
    numrow= sh1.getRows(); 
    } 
    catch (Exception e) 

    { 
    e.printStackTrace(); 
    } 

    // Create 2 D array and pass row and columns 
    Object [][] logindata=new Object[numrow][sh1.getColumns()]; 

    // This will run a loop and each iteration it will fetch new row 
    for(int i=0;i<numrow;i++){ 

    // Fetch first row username 
     logindata[i][0]=sh1.getCell(0,i).getContents(); 
    // Fetch first row password 
     logindata[i][1]=sh1.getCell(1,i).getContents(); 

    } 

    // Return 2d array object so that test script can use the same 
    return logindata; 
    } 

    } 
+0

Также добавьте jxl jars в вашу библиотеку проектов. И убедитесь, что ваш Excel shoudl - это рабочий лист Microsoft Excel 97-2003 с расширением .xls, например, Testdata.xls – Curious

Смежные вопросы