Thursday, 11 May 2017

Selenium firefox webdriver: set download.dir for a pdf

I tried several solution around nothing really works or they are simply outdated.

Here my webdriver profile

let firefox = require('selenium-webdriver/firefox');
let profile = new firefox.Profile();
profile.setPreference("pdfjs.disabled", true);
profile.setPreference("browser.download.dir", 'C:\\MYDIR');
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf","application/x-pdf", "application/acrobat", "applications/vnd.pdf", "text/pdf", "text/x-pdf", "application/vnd.cups-pdf");

I simply want to download a file and set the destination path. It looks like browser.download.dir is ignored.

That's the way I download the file:

function _getDoc(i){
    driver.sleep(1000)
        .then(function(){
            driver.get(`http://mysite/pdf_showcase/${i}`);
            driver.wait(until.titleIs('here my pdf'), 5000);

        })
}
for(let i=1;i<5;i++){
    _getDoc(i);
}

The page contains an iframe with a pdf. I can gathers the src attribute of it, but with the iframe and pdfjs.disabled=true simply visits the page driver.get() causes the download (so I'm ok with it).

The only problem is the download dir is ignored and the file is saved in the default download firefox dir.

Side question: if I wrap _getDoc() in a foreach for that parameter i how can I be sure I won't flood the server? If I use the same driver instance the requests are sequentials?



via alfredopacino

No comments:

Post a Comment