首页 > 解决方案 > 如何使用 selenium java 将表的内容写入 csv 文件?

问题描述

我有一个包含 150 多个内容的表格的网页。但并非所有数据都显示在一个页面中,即第一页仅显示 50 个内容,这样表格中的内容分为五页。所以我们首先我们必须从第一页获取表格中的内容,然后移动到第二页从表格中获取内容,依此类推.. 对于所有四个页面,并使用 selenium java 将这些内容写入 csv 文件。

因此,对于我已经尝试过此代码,使用此代码,我可以将所有数据从表中获取到 csv 文件,但我的问题是当我打开并检查 csv 文件时,表中的所有数据都附加在单个列中。我需要让这些数据与我的表相同,即行和列应该与表相同

public static void main(String[] args) throws IOException, InterruptedException {

  System.setProperty("webdriver.chrome.driver", "Driver path");
  WebDriver driver = new ChromeDriver();
  driver.manage().window().maximize();
  driver.get("Page URL");
  WebDriverWait Wait = new WebDriverWait(driver, 30);
  WebElement table = Wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("table-container-inner"))); //getting data from table in first page
  String dataoutput;
  dataoutput = table.getText();
  System.out.println(dataoutput);
  driver.findElement(By.xpath("//a[@aria-label='Next']")).click(); // here i am moving on to next page by clicking next option
  WebElement table1 = Wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("table-container-inner")));
  String dataoutput1 = table1.getText();
  System.out.println(dataoutput1);
  driver.findElement(By.xpath("//a[@aria-label='Next']")).click();
  WebElement table2 = Wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("table-container-inner")));
  String dataoutput2 = table2.getText();
  System.out.println(dataoutput2);
  driver.findElement(By.xpath("//a[@aria-label='Next']")).click();
  WebElement table3 = Wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("table-container-inner")));
  String dataoutput3 = table3.getText();
  System.out.println(dataoutput3);

  String tableoutput = dataoutput + dataoutput1 + dataoutput2 + dataoutput3;

  String csvOutputFile = "table.csv";

  try (FileWriter writecsv = new FileWriter("C:\\Natesh\\Automation\\table.csv")) {
   writecsv.append(tableoutput);
  }
}

标签: javaseleniumselenium-webdriver

解决方案


推荐阅读