web-dev-qa-db-fra.com

Télécharger le fichier via Google Chrome en mode sans tête

Je fais du code dans Cromedrive en mode "normal" et fonctionne très bien. Lorsque je passe en mode sans tête, il ne télécharge pas le fichier. J'ai déjà essayé le code que j'ai trouvé sur Internet, mais je n'ai pas fonctionné.

chrome_options = Options()
chrome_options.add_argument("--headless")
self.driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r'{}/chromedriver'.format(os.getcwd()))
self.driver.set_window_size(1024, 768)
self.driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')

params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': os.getcwd()}}
self.driver.execute("send_command", params)

Quelqu'un a une idée de la façon de résoudre ce problème? PS: Je n'ai pas nécessairement besoin d'utiliser Chomedrive. Si cela fonctionne dans un autre lecteur, cela me convient.

5
CBury

Pour javascript, utilisez le code ci-dessous:

    const chrome = require('Selenium-webdriver/chrome');
    let options = new chrome.Options();
    options.addArguments('--headless --window-size=1500,1200');
    options.setUserPreferences({ 'plugins.always_open_pdf_externally': true,
    "profile.default_content_settings.popups": 0,
    "download.default_directory": Download_File_Path });
    driver = await new webdriver.Builder().setChromeOptions(options).forBrowser('chrome').build();

Ensuite, changez d'onglet dès que vous cliquez sur le bouton de téléchargement:

    await driver.sleep(1000); 
    var Handle = await driver.getAllWindowHandles();
    await driver.switchTo().window(Handle[1]);
0
Justin Chetty