gpt4 book ai didi

java - 如何使用 webdriver 将列标题和边表数据从 Web 打印到 Excel

转载 作者:行者123 更新时间:2023-12-02 03:51:53 25 4
gpt4 key购买 nike

问题下面的代码允许我打印列标题或将 Web 表数据打印到 csv 文件中,具体取决于我是否选择“th”或“td”标签,但不能同时选择两者。

我的问题 如何让它在 CSV 输出中同时打印“th”和“td”文本?

代码我已经尝试了我的代码的两个版本,但结果是相同的。两个版本均已附上。

代码版本 1

public class WebToCSV {

static WebDriver driver = new FirefoxDriver();

public static void main(String[] args) throws Throwable {

//driver.navigate().to("http://goo.gl/El1PIV");
driver.navigate().to("http://www.bloomberg.com/markets/stocks/futures");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

WebElement table = driver.findElement(By.cssSelector
("div[class='data-tables first']"));

List<WebElement> irow = table.findElements
(By.cssSelector("div[class='data-tables first'] tr"));
System.out.println("No. of rows in the table are: " + irow.size());

// Create excel workbook and sheet.
FileOutputStream fos = new FileOutputStream
("/Users/HARSHENDU/Desktop/Selenium_Practice/Stats.csv");

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet ws = wb.createSheet("WriteToXL");

for(int r=0; r<irow.size(); r++) {
WebElement webRow = irow.get(r);
System.out.println(webRow.getText());
XSSFRow row = ws.createRow(r);
List<WebElement> allCells = webRow.findElements(By.tagName("td"));

for(int c=0; c<allCells.size(); c++) {
WebElement webCell = allCells.get(c);
String text = webCell.getText();

XSSFCell excelCell = row.createCell(c);
excelCell.setCellValue(text);
}

System.out.println("");
}

fos.flush();
wb.write(fos);
fos.close();

end();

}
public static void end() {
driver.close();
driver.quit();
}

}

代码版本 2此版本有 2 组 for 循环,第一组用于打印 csv 中的列标题,第二组用于打印 webtable 中的所有数据。

public class StatsToxL {

static WebDriver driver = new FirefoxDriver();

public static void main(String[] args) throws Throwable {

//driver.navigate().to("http://goo.gl/El1PIV");
driver.navigate().to("http://www.bloomberg.com/markets/stocks/futures");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

WebElement table = driver.findElement(By.cssSelector
("div[class='data-tables first']"));

// Get webtable header column row.
List<WebElement> irow2 = table.findElements
(By.cssSelector("div[class='data-tables first'] thead tr "));
System.out.println("No. of rows in the header are: " + irow2.size());

// Get all webtable rows
List<WebElement> irow = table.findElements
(By.cssSelector("div[class='data-tables first'] tbody tr"));
int iRowCount = irow.size();
System.out.println("No. of rows in the table are: " + iRowCount);

// Create excel workbook and sheet.
FileOutputStream fos = new FileOutputStream
("/Users/HARSHENDU/Desktop/Selenium_Practice/Stats.csv");

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet ws = wb.createSheet("WriteToXL");

// Iterate over webtable header row and header cells.
for(int r2=0; r2<irow2.size(); r2++) {
WebElement webRow2 = irow2.get(r2);
System.out.println(webRow2.getText());
XSSFRow row2 = ws.createRow(r2);

List<WebElement> allCells2 = webRow2.findElements(By.tagName("th"));

for(int c2=0; c2<allCells2.size(); c2++) {
WebElement webCell = allCells2.get(c2);
String text2 = webCell.getText();
XSSFCell excelCell2 = row2.createCell(c2);
excelCell2.setCellValue(text2);

}
System.out.println("");
fos.flush();
wb.write(fos);
}

// Iterate over webtable rows and cells.
for(int r=0; r<iRowCount; r++) {
WebElement webRow = irow.get(r);
System.out.println(webRow.getText());
XSSFRow row = ws.createRow(r);
List<WebElement> allCells = webRow.findElements(By.tagName("td"));

for(int c=0; c<allCells.size(); c++) {
WebElement webCell = allCells.get(c);
String text = webCell.getText();

XSSFCell excelCell = row.createCell(c);
excelCell.setCellValue(text);
}

System.out.println("");
}

fos.flush();
wb.write(fos);
fos.close();

end();

}
public static void end() {
driver.close();
driver.quit();
}

}

最佳答案

改变

webRow.findElements(By.tagName("td"))

webRow.findElements(By.xpath("//td | //th"))

关于java - 如何使用 webdriver 将列标题和边表数据从 Web 打印到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35806404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com