Selenium - Java:如何获取文件的绝对路径

Selenium - Java: How to get absolute path to the file

我创建了获取绝对路径的方法,但是在调试时我得到了应该上传的文件的错误路径。

那么,获取绝对路径的方法:

public String getFilePathByFormat(String filePath) {
        File file = new File(filePath);
        return file.getAbsolutePath();
    }

那我在一般的低级上传方法中使用这个方法:

public void uploadFile(WebElement webElement, String filePath){
        try {
            webDriver.manage().timeouts().implicitlyWait(40, SECONDS);
            webElement.sendKeys(getFilePathByFormat(filePath));
        }catch (Exception e){
            printErrorAndStopTest();
        }
    }

当我调试和评估不正确的路径时得到: E:\acceptance-tests\src\test\resources, 但是在磁盘名称之后,应该多一个文件夹 - 项目所在的位置。

怎么了?为什么 getAbsolutePath 没有建立正确的路径? 谢谢

文件系统中有两种文件路径。

1) 绝对路径总是从根元素开始 并且包含定位文件所需的完整目录列表。例如,Unix 系统上的 '/Users/username/filename.txt' 或 Windows 系统上的 'C:\Users\username\filename.txt'。

相对路径没有任何目录列表,需要与另一个路径组合才能访问文件。例如,username/filename.txt 是相对路径;请注意,它的开头没有任何正斜杠或反斜杠。

getAbsolutePath() returns 文件的绝对路径,如下所示。

  1. 使用绝对路径名创建文件对象 - 此方法只是 returns 提供的用于创建文件的路径名。 并且在 Windows 系统的情况下,如果驱动器名称不存在于给定的绝对路径名中,默认情况下会在开头附加驱动器名称

  2. 文件对象是使用相对路径创建的 - 这里的相对路径名通过根据当前用户目录进行解析而成为绝对路径。

本例中传递的是绝对路径'/acceptance-tests/src/test/resources/test4.pdf';如 windows 系统所述,驱动器详细信息以给定路径为前缀并作为绝对路径返回。

要使其工作,您可以传递文件的相对路径 'src/test/resources/test4.pdf' 或者只传递文件名 'test4.pdf'.