2017-01-24 72 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

相关问题