Download File Dialog

前端 未结 2 2359
生来不讨喜
生来不讨喜 2021-02-20 18:39

I\'m using Selenium with my CI system to automatically test my various applications, one of which is a web form with a downloadable copy of our answers (as a dynamically generat

相关标签:
2条回答
  • 2021-02-20 19:14

    This is an annoying issue indeed. However, I could figure out how to solve it for Firefox. Maybe you can find a similar solution for other browsers.

    Basically, you have to force the browser to download the file without asking for it. You can do that by loading a specially crafted profile.

    from selenium import webdriver
    
    myprofile = webdriver.FirefoxProfile('./profile')
    myprofile.set_preference('browser.download.dir', '/tmp/my_downloads_folder')
    myprofile.set_preference('browser.download.folderList', 2)
    myprofile.set_preference('pdfjs.migrationVersion', 1);
    
    browser = webdriver.Firefox(fp)
    

    Besides loading the profile, we also define a downloads folder and disable the pdfjs plugin.

    In ./profile folder, we have a mimeTypes.rdf file like this:

    <?xml version="1.0"?>
    <RDF:RDF xmlns:NC="http://home.netscape.com/NC-rdf#"
             xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <RDF:Description RDF:about="urn:mimetype:application/pdf"
                       NC:value="application/pdf"
                       NC:editable="true">
        <NC:handlerProp RDF:resource="urn:mimetype:handler:application/pdf"/>
      </RDF:Description>
      <RDF:Description RDF:about="urn:mimetype:handler:application/pdf"
                       NC:alwaysAsk="false"
                       NC:saveToDisk="true"
                       NC:handleInternal="false">
        <NC:externalApplication RDF:resource="urn:mimetype:externalApplication:application/pdf"/>
       </RDF:Description>
    </RDF:RDF>
    

    I hope it helps you.

    0 讨论(0)
  • 2021-02-20 19:21

    As far as I know you can't use selenium for that, for the reasons you stated yourself. However, I think the best way to approach this is to download the generated pdf directly without selenium. Since you know its url, you can maybe use the approach outlined in this article. It describes the use of "Powder-Monkey" to do exactly what you want to do.

    0 讨论(0)
提交回复
热议问题