【问题标题】:How to open an excel file protected with password using Selenium WebDriver如何使用 Selenium WebDriver 打开受密码保护的 excel 文件
【发布时间】:2021-08-04 18:21:32
【问题描述】:

如何使用 Selenium 打开受密码保护的 excel 文件??

我可以与任何其他没有密码的 Excel 进行交互,我现在该怎么做。

这是我已经无需密码即可访问 excel 文件的代码:

    File src = new File("C:/Users/.../.../.../Credentials Automation.xlsx");
    FileInputStream fis = new FileInputStream(src);
    XSSFWorkbook wb = new XSSFWorkbook(fis);
    XSSFSheet sheet1 = wb.getSheetAt(0);
    XSSFSheet sheet2 = wb.getSheetAt(1);

【问题讨论】:

  • 这绝对与 Selenium、selenium-webdriver 或自动化无关!
  • 对你来说可能不是,但对我来说是!!!我正在使用 selenium webdriver 创建一个自动化,我需要打开一个在打开它之前请求密码的 excel 文件。我的问题:有没有办法使用硒来做到这一点。如果您知道如何阅读,上面的标签是关于“Java”、“Excel”和“Selenium”的,上面的所有代码都在我的 Selenium 脚本中,所以是的,我将它与 selenium 一起使用。

标签: java excel selenium selenium-webdriver automation


【解决方案1】:

您指的是 apache-poi 库(您在代码片段中使用的库),它允许操作 excel 文件。据说,Selenium 没有这方面的功能。


Maven:Apache-poi

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml</artifactId>
  <version>5.0.0</version>
</dependency>

或从这里手动下载 jar 文件:https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad/5.0.0

解决方案

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;

import org.apache.poi.poifs.crypt.Decryptor;
import org.apache.poi.poifs.crypt.EncryptionInfo;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.testng.annotations.Test;

public class AppTest {

    @Test
    public void openProtectedExcelFile() throws IOException, GeneralSecurityException {

        String excelFilePath = "E:/Credentials Automation.xlsx";
        POIFSFileSystem fileSystem = new POIFSFileSystem(new File(excelFilePath));
        EncryptionInfo encryptionInfo = new EncryptionInfo(fileSystem);
        Decryptor decryptor = Decryptor.getInstance(encryptionInfo);
        decryptor.verifyPassword("selenium"); //pass the password in here
        InputStream dataStream = decryptor.getDataStream(fileSystem);

        XSSFWorkbook wb = new XSSFWorkbook(dataStream);
        XSSFSheet sheet1 = wb.getSheetAt(0);
        XSSFSheet sheet2 = wb.getSheetAt(1);

        XSSFRow row1 = sheet1.getRow(0);
        System.out.println(row1.getCell(0));
        wb.close();
        
    }
}

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2021-10-08
    • 2020-08-29
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多