Записать данные в файл Excel - PullRequest
       300

Записать данные в файл Excel

0 голосов
/ 07 августа 2020

Я пробовал приведенный ниже код, который копирует данные файла чтения Excel в файл данных записи Excel, но я хочу, чтобы веб-элементы в файл данных записи Excel. Хотите, чтобы данные tr и td были в файле Excel с использованием Selenium Java. В том же классе выполняется чтение из файла Excel и вы хотите записать данные веб-элементов в файл Excel.

public class NewTest {
    public static String driverPath = "D:/Testing/Drivers/";
    public static WebDriver driver;
    public static void main(String[] args) throws IOException{
        System.out.println("launching chrome browser");
        System.setProperty("webdriver.chrome.driver", driverPath+"chromedriver.exe");
        driver = new ChromeDriver();
        driver.navigate().to("anyurl");
        WebElement id = driver.findElement(By.xpath("//input[@id='txt_username']"));
        id.sendKeys("anyusername");
        WebElement pass = driver.findElement(By.xpath("//input[@id='txt_password']"));
        pass.sendKeys("anypass");
        driver.findElement(By.id("txtCaptcha")).click();
        WebDriverWait wait = new WebDriverWait(driver,100);
        new WebDriverWait(driver,100).until(ExpectedConditions.urlToBe("anyurl"));
        driver.findElement(By.linkText("Exit")).click();
        driver.get("anyurl");
                FileInputStream fs = new FileInputStream("D:\\Test.xls"); //or xlsx
                XSSFWorkbook workbook = new XSSFWorkbook(fs);
                XSSFSheet sheet = workbook.getSheetAt(0);
                Row row = sheet.getRow(0);
                Cell cell = row.getCell(0);    
driver.findElement(By.xpath("//form[@id=\'aspnetForm\']/div[3]/div/div/table/tbody/tr/td/div/input")).clear();
driver.findElement(By.xpath("//form[@id=\'aspnetForm\']/div[3]/div/div/table/tbody/tr/td/div/input")).sendKeys(sheet.getRow(0).getCell(0).getStringCellValue());
driver.findElement(By.xpath("//form[@id=\'aspnetForm\']/div[3]/div/div/table/tbody/tr/td/div/input[2]")).clear();
driver.findElement(By.xpath("//form[@id=\'aspnetForm\']/div[3]/div/div/table/tbody/tr/td/div/input[2]")).sendKeys(sheet.getRow(0).getCell(1).getStringCellValue());
driver.findElement(By.xpath("//input[@id=\'ctl00_ContentPlaceHolder1_btn_submit\']")).click();
WebElement element = driver.findElement(By.xpath("//*tr[@id='ctl00_ContentPlaceHolder1_tr_data']/td/div/table/tbody"));
                List<WebElement> tbdy = element.findElements(By.tagName("tbody"));
                List<WebElement> tr = tbdy.get(0).findElements(By.tagName("tr"));
            try {
                    String filename = "D:\\Test.xls";
                    HSSFWorkbook workbook = new HSSFWorkbook();
                    HSSFSheet sheet = workbook.createSheet("FirstSheet");
                    CellStyle style = workbook.createCellStyle();//Create style
                    HSSFRow row = sheet.createRow(0);
                     }
                    for (int i = 0; i < tr.size(); i++) {
                        HSSFRow row2 = sheet.createRow(i+1);
                        List<WebElement> td = tr.get(i).findElements(By.tagName("td"));
                        for (int j = 0; j < td.size(); j++) {
                            td.get(j).getText();
                        row2.createCell(j).setCellValue(td.get(j).getText());
                        }
                    }
                    FileOutputStream fileOut = new FileOutputStream(filename);
                    workbook.write(fileOut);
                    fileOut.close();
                    System.out.println("Your excel file has been generated!");
}
     }```

1 Ответ

0 голосов
/ 08 августа 2020

Трудно сказать, что вы делаете, но вот общий пример c, который должен помочь вам двигаться в правильном направлении.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
options.add_argument('disable-infobars')
driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\\Utility\\chromedriver.exe')
driver.get("http://www.ultimatetennisstatistics.com/playerProfile?playerId=4742")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@id='playerPills']//a[@class='dropdown-toggle'][normalize-space()='Statistics']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='dropdown-menu']//a[@id='statisticsPill'][normalize-space()='Statistics']"))).click()
statistics_items = WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located((By.XPATH, "//table[@class='table table-condensed table-hover table-striped']//tbody//tr/td")))
statistics_value = WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located((By.XPATH, "//table[@class='table table-condensed table-hover table-striped']//tbody//tr//following::th[1]")))
for item, value in zip(statistics_items, statistics_value):
    print('{} {}'.format(item.text, value.text))

Результат:

Ace % 4.0%
Double Fault % 2.1%
1st Serve % 68.7%
1st Serve Won % 71.8%
2nd Serve Won % 57.3%
Break Points Saved % 66.3%
Service Points Won % 67.2%
Service Games Won % 85.6%

Теперь вместо печати результатов отправьте все в фрейм данных и сохраните фрейм данных в Excel.

df.to_excel("output.xlsx")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...