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

Selenium-Java:如何获取文件的绝对路径,java,selenium-webdriver,file-upload,automated-tests,absolute-path,Java,Selenium Webdriver,File Upload,Automated Tests,Absolute Path,我创建了一个方法,在那里我得到了一个绝对路径,但当我调试时,我得到了一个不正确的文件路径,应该上传 所以,我得到绝对路径的方法是: public String getFilePathByFormat(String filePath) { File file = new File(filePath); return file.getAbsolutePath(); } 然后我在一般的低级上传方法中使用这个方法: public void uploadFile(

我创建了一个方法,在那里我得到了一个绝对路径,但当我调试时,我得到了一个不正确的文件路径,应该上传

所以,我得到绝对路径的方法是:

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()返回文件的绝对路径,如下所示

  • 使用绝对路径名创建文件对象-此方法仅返回创建文件所提供的路径名对于Windows系统,如果驱动器名不存在于给定的绝对路径名中,则默认情况下会在开头追加驱动器名

  • 文件对象是使用相对路径创建的-在这里,相对路径名通过对当前用户目录进行解析而成为绝对值

  • 在本例中,通过绝对路径“/acceptance tests/src/test/resources/test4.pdf”;如windows系统所述,驱动器详细信息以给定路径作为前缀,并以绝对路径返回


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

    文件系统中有两种类型的文件路径

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

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

    getAbsolutePath()返回文件的绝对路径,如下所示

  • 使用绝对路径名创建文件对象-此方法仅返回创建文件所提供的路径名对于Windows系统,如果驱动器名不存在于给定的绝对路径名中,则默认情况下会在开头追加驱动器名

  • 文件对象是使用相对路径创建的-在这里,相对路径名通过对当前用户目录进行解析而成为绝对值

  • 在本例中,通过绝对路径“/acceptance tests/src/test/resources/test4.pdf”;如windows系统所述,驱动器详细信息以给定路径作为前缀,并以绝对路径返回


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

    实际发布文件路径的值可能会有所帮助…文件路径值我在page类中指示为字符串:public void uploadneedAttachmentandSetType(){uploadFile(“/acceptance tests/src/test/resources/test4.pdf”);}实际发布filePath的值可能会有所帮助……filePath值我在page类中指示为字符串:public void uploadNeededAttachmentAndSetType(){uploadFile(“/acceptance tests/src/test/resources/test4.pdf”);}感谢您的描述。我尝试过使用相对路径或只保留文件名,但它不起作用。此外,我尝试过使用dots:
    /acceptance tests/src/test/resources/test4.pdf
    ,但它复制了设置点之前的文件夹:
    E:/automationtests/acceptance tests//acceptance tests/src/test/resources/test4.pdf
    -调试期间的评估结果。/验收测试文件夹在路径中重复如果我正确,“验收测试”是您的项目文件夹名称。请从输入文件路径中删除该名称和点。当我删除项目文件夹名称并点测试失败时,您的输入应为“src/test/resources/test4.pdf”。当我调试和评估
    getFilePathByFormat(filePath)
    结果是E:/src/test/resources/test4.pdf什么是不正确的问题出现在“/”之前的“src”中“。将其删除并运行测试。谢谢你的描述。我尝试过使用相对路径,或者只保留文件名,但它不起作用。此外,我还尝试使用dots:
    /acceptance tests/src/test/resources/test4.pdf
    ,但它复制了设置dot之前的文件夹:
    E:/automationtests/acceptance tests//acceptance tests/src/test/resources/test4.pdf
    ——调试期间的评估结果/验收测试文件夹在路径中重复如果我正确,“验收测试”是您的项目文件夹名称。请从输入文件路径中删除该名称和点。当我删除项目文件夹名称并指出测试失败时,您的输入应该是“src/test/resources/test4.pdf”。当我调试和评估
    getFilePathByFormat(filePath)
    时,结果是E:/src/test/resources/test4.pdf什么是不正确的?问题在“src”之前的“/”中。删除它并运行测试。谢谢