java - Selenium WebDriver - Java : How to write webtable data into an excel file in Selenium WebDriver using Java?

标签 java excel selenium selenium-webdriver

:) 我正在尝试使用 Selenium-WebDriver 和 Java 将 web 表数据写入 excel 文件。通过下面的代码,我只能打印 excel 中的最后一列数据,但不能打印整个 webtable 数据。你能帮我在这里吗......

import java.util.*; 
import java.lang.*; 
import  java.io.*;  
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.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver;  

public class WebTableTOSpreedsheet  
{ 
public static void main(String[] args) throws IOException  
{     
System.out.println("Hello Dear.....");     
System.out.println();  

WebDriver wb = new FirefoxDriver();          
wb.navigate().to("http://www.w3schools.com/html/html_tables.asp"); 
wb.manage().window().maximize();     
System.out.println(wb.getTitle() +" - WebPage has been launched");   

List<WebElement> irows =   wb.findElements(By.xpath("//*[@id='main']/table[1]/tbody/tr"));     
int iRowsCount = irows.size();     
List<WebElement> icols =   wb.findElements(By.xpath("//*[@id='main']/table[1]/tbody/tr[1]/th"));     
int iColsCount = icols.size();     
System.out.println("Selected web table has " +iRowsCount+ " Rows and " +iColsCount+ " Columns");     
System.out.println();      

FileOutputStream fos = new FileOutputStream("D://Software//AutomationPractise//WebTableTOSpreedsheet.xlsx");                                 

XSSFWorkbook wkb = new XSSFWorkbook();       
XSSFSheet sheet1 = wkb.createSheet("DataStorage"); 

for (int i=1;i<=iRowsCount;i++)      
{               
for (int j=1; j<=iColsCount;j++)                    
{           
if (i==1)       
{           
WebElement val= wb.findElement(By.xpath("//*[@id='main']/table[1]/tbody/tr["+i+"]/th["+j+"]"));             
String  a = val.getText();            
System.out.print(a);                        

XSSFRow excelRow = sheet1.createRow(i);             
XSSFCell excelCell = excelRow.createCell(j);                  
excelCell.setCellType(XSSFCell.CELL_TYPE_STRING);                 
excelCell.setCellValue(a);  

//wkb.write(fos);       
}       
else        
{           
WebElement val= wb.findElement(By.xpath("//*[@id='main']/table[1]/tbody/tr["+i+"]/td["+j+"]"));             
String a = val.getText();                    
System.out.print(a);                            

XSSFRow excelRow = sheet1.createRow(i);             
XSSFCell excelCell = excelRow.createCell(j);                      
excelCell.setCellType(XSSFCell.CELL_TYPE_STRING);                   
excelCell.setCellValue(a);   

//wkb.write(fos);       
}       
}               
System.out.println();     
}     
fos.flush();     
wkb.write(fos);     
fos.close();     
}
}

输出:Webtable's data write issue in excel

最佳答案

您正在为 for (int j=1; j<=iColsCount;j++) 中的每个单元格创建新的空行环形。移动XSSFRow excelRow = sheet1.createRow(i);循环迭代 i .

    for (int i = 1; i <= iRowsCount; i++) {
        XSSFRow excelRow = sheet1.createRow(i);
        for (int j = 1; j <= iColsCount; j++) {

对于其他人,我必须将其添加到我的代码中才能正确执行:
    System.setProperty("webdriver.firefox.bin", "C:\\path\\to\\Mozilla Firefox\\firefox.exe");

关于java - Selenium WebDriver - Java : How to write webtable data into an excel file in Selenium WebDriver using Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34150116/

相关文章:

java - 使用 Log4j 日志记录实用程序指定我自己的附加程序(或行为)

java - POI Java Excel解决方案——缩进值

excel - 通过 ParamArray 打开多个工作簿时将工作簿分配给数组

java - 在 Java 中传递的可选匿名参数

java - 使用 Jetty Embedded 处理 JSP 时出现问题。 (贾斯珀异常 : Unable to compile class for JSP)

java - 如何获取 HttpResponse 文本

excel - vba 尝试使用字符串的许多变体查找目录?

java - 网格 : How to make hub password protected

java - 无法在 org.junit.runner 中找到/导入 Runwith 类?

python - Selenium -Firefox : Firefox browser crashes when running my Selenium script