【问题标题】:Using Java Selenium, how can I make Firefox open downloaded text files in a new window or tab?使用 Java Selenium,如何让 Firefox 在新窗口或选项卡中打开下载的文本文件?
【发布时间】:2015-01-08 13:04:52
【问题描述】:

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

文件是在提交表单时下载的,并且不能更改任何表单属性,因为我们不想改变用户体验。

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

由于我能够在手动下载这些文件时指定此行为,因此我认为也可以通过编程方式进行。

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

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

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

【问题讨论】:

    标签: java firefox selenium selenium-webdriver


    【解决方案1】:

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

    路径文件路径

      String filePath = "file:///C:/Users/userdir/Documents/Logs/error.log"
    
      Using driver.get(path);
    

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

    【讨论】:

    • 这要求您知道完整的文件路径,而在远程浏览器上运行时可能并非如此。如果无法随意清除旧文件,最终会出现 error(321).log。
    • 设置一个默认的下载目录应该可以知道文件在远程浏览器上的保存位置 fProfile.setPreference("browser.download.dir", @your_preferred_dir);
    • 是的,但是如果文件被重命名,这将无济于事,因为它已经被不同的进程下载到相同的位置。
    • 有一个脚本可以在每次运行作业时清除该目录,或者为运行脚本的所有内容添加前缀。
    • 这增加了开销,并且很难实现应该很容易的事情。
    猜你喜欢
    • 2012-01-07
    • 2019-01-09
    • 2023-04-04
    • 1970-01-01
    • 2012-12-08
    • 2020-04-16
    • 1970-01-01
    • 2019-07-26
    • 2018-10-31
    相关资源
    最近更新 更多