繁体   English   中英

在无头火狐(Ubuntu)上使用 selenium 使用 python 下载文件

[英]Downloading files with python using selenium on headless firefox (Ubuntu)

我试图找出一种方法让这个脚本通过无头 Firefox 下载文件。 我没有看到它出现在我的下载目录中并且我没有收到任何错误,有人可以帮我弄清楚如何实际下载这个文件吗? 当不在无头模式下完成时,此代码会定期工作。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
import requests
from selenium.webdriver.firefox.options import Options as FirefoxOptions


options = FirefoxOptions()
options.add_argument("--headless")
driver = webdriver.Firefox(options=options)
driver.get('website')
sleep(2)
driver.maximize_window()
search = driver.find_element_by_id('UserName')
search.send_keys('username')
search = driver.find_element_by_id('Password')
search.send_keys('password')
search.send_keys(Keys.RETURN)
sleep(4)
driver.get('website')
sleep(8)

try:
    element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "ej2-datetimepicker_0_input"))
            )
    element.click
    link = driver.find_element_by_id('ej2-datetimepicker_0_input')
    link.click()
   
except:
    driver.quit()
driver.implicitly_wait(3)    
date = driver.find_element_by_xpath('//*[@id="ej2-datetimepicker_0_input"]')
date.clear()
date.send_keys('7/1/2020 - 8/24/2020')


sleep(3)
WebDriverWait(driver, 8).until(EC.element_to_be_clickable((By.XPATH, "//button[@mat-button]/span[@class='mat-button-wrapper']//span[text()='Excel']"))).click()
sleep(1)
print('done')


我也遇到了同样的问题。 就我而言,我正在下载 pdf。 您可以尝试禁用弹出下载对话框吗? 以下对我有用。

from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options


s = Service('./driver/geckodriver.exe')
download_dir = "download directory"

options = Options()
options.set_preference("pdfjs.disabled", True)
options.set_preference("browser.download.folderList", 2)
options.set_preference("browser.download.manager.useWindow", False)
options.set_preference("browser.download.dir", download_dir)
options.set_preference("browser.helperApps.neverAsk.saveToDisk", 
                       "application/pdf, application/force-download")
options.add_argument("--headless")
options.add_argument('--disable-gpu')
driver = webdriver.Firefox(service=s, options=options)

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM