使用JavaSelenium,如何让Firefox在新窗口或选项卡中打开下载的文本文件?

使用JavaSelenium,如何让Firefox在新窗口或选项卡中打开下载的文本文件?,java,firefox,selenium,selenium-webdriver,Java,Firefox,Selenium,Selenium Webdriver,我们希望在网格环境中运行Selenium测试,因此无法从远程浏览器读取任何下载的文件。为了能够使用动态内容检查某些下载文件的内容,我们认为可以配置FirefoxProfile,以便在新选项卡中打开某些类型的下载文件,然后直接从浏览器读取内容 文件在提交表单时下载,更改任何表单属性都不是选项,因为我们不想更改用户体验 我找到了有关如何设置下载文件夹和指定直接下载指定文件类型的信息,但没有找到如何“相反”的信息 由于我能够在手动下载这些文件时指定此行为,因此我假设也有一种编程方式 我们使用的Fire

我们希望在网格环境中运行Selenium测试,因此无法从远程浏览器读取任何下载的文件。为了能够使用动态内容检查某些下载文件的内容,我们认为可以配置FirefoxProfile,以便在新选项卡中打开某些类型的下载文件,然后直接从浏览器读取内容

文件在提交表单时下载,更改任何表单属性都不是选项,因为我们不想更改用户体验

我找到了有关如何设置下载文件夹和指定直接下载指定文件类型的信息,但没有找到如何“相反”的信息

由于我能够在手动下载这些文件时指定此行为,因此我假设也有一种编程方式

我们使用的FirefoxProfile是新的FirefoxProfile(),而不是从文件系统导入的配置文件

我最后一次尝试是这样的:

    FirefoxProfile firefoxProfile = new FirefoxProfile();
    firefoxProfile.setPreference("browser.helperApps.neverAsk.openFile","text/csv, text/plain");
    return firefoxProfile;

获取文件路径和名称,然后打开WebDriver的新实例或转到现有实例中的页面

路径文件路径

  String filePath = "file:///C:/Users/userdir/Documents/Logs/error.log"

  Using driver.get(path);

将在浏览器窗口中打开txt文件。

这要求您知道完整的文件路径,而在远程浏览器上运行时可能不是这样。如果不可能随意清除旧文件,则最终会出现错误(321)。log.Setting默认下载目录应该能够确定文件在远程浏览器fProfile.setPreference(“browser.download.dir”,@your_preferred_dir)上的保存位置;是的,但是如果文件被重命名,这将不起作用,因为它已被其他进程下载到同一位置。请使用脚本,在每次运行作业时清除该目录,或者在运行脚本的所有内容的目录前加上前缀。这会增加开销,并且很难实现一些本应非常简单的事情。