2017-01-24 69 views
0

我的代碼是使用webelement列表打印一個標題列表到excel,但它只打印最後一個數據到excel。請幫忙。從excel中的webelement列表中僅打印一個元素

  driver.get("http://www.speakingcs.com/"); 
       Sheet sh; 
      List<WebElement> postTitles = driver.findElements(By.className("entry-header")); 
     for (WebElement eachTitle:postTitles) 
     { 
      System.out.println(eachTitle.getText()); 
       File object = new File("D:/selenium/data.xlsx"); 
        FileInputStream fis=new FileInputStream(object); 
        wb=WorkbookFactory.create(fis); 
        sh=wb.getSheet("Sheet1"); 
        Row row=null; 
        if(sh.getRow(0) != null) { 
          row = sh.getRow(0);} 
         else { 
          row = sh.createRow(0); 
         } 

         Cell cell=row.createCell(0); 
        cell.setCellType(cell.CELL_TYPE_STRING);     
        cell.setCellValue(eachTitle.getText()); 

      for(int m=1; m<6; m++) 

     sh.autoSizeColumn(m); 
      } 
         FileOutputStream fos=new  FileOutputStream("D:/selenium/data.xlsx"); 
         wb.write(fos); 
         fos.close(); 
         System.out.println("test1"); 

      }catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
          } 

this is printing only last title whereas 5 are there. 

沒有錯誤是there.try catch添加。

回答

0

看起來像是覆蓋您正在處理的每個WebElement的Excel表格,並且始終覆蓋該表格中的第一行,而不是創建新行。嘗試爲每個元素創建一個新行,如下所示:

wb = WorkbookFactory.create(fis); 
sh = wb.getSheet("Sheet1"); 

List<WebElement> postTitles = driver.findElements(By.className("entry-header")); 
for (int index = 0; index <= postTitles.size(); index++) { 
    WebElement eachTitle = postTitles.get(index); 

    Row row = null; 
    if (sh.getRow(index) != null) { 
     row = sh.getRow(index); 
    } else { 
     row = sh.createRow(index); 
    } 
    ... 
} 
+0

thankyou very much.its perfect – sr1233

相關問題