python Селен не обходит firefox диалог загрузки, даже если настройки были установлены - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь загрузить файл (Сводка рынка (закрытие) - ZIP) по следующей ссылке: https://dps.psx.com.pk/downloads

Вот мой код:

from datetime import date
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import ElementClickInterceptedException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.preferences.instantApply",True)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv")
profile.set_preference("browser.helperApps.alwaysAsk.force",False)
profile.set_preference("browser.download.manager.showWhenStarting",False)
profile.set_preference("browser.download.folderList",0)


driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://dps.psx.com.pk/downloads')

start_date = driver.find_element_by_id('downloadsDatePicker')
start_date.send_keys(Keys.BACKSPACE*10)
send_date = date(2014,1,1).strftime("%Y-%m-%d")
start_date.send_keys(send_date)
driver.find_element_by_id('downloadsSearchBtn').click()
link = '/download/mkt_summary/{}.Z'.format(send_date)
time.sleep(5)
driver.find_element_by_css_selector("a[href='{}'".format(link)).click()

Несмотря на то, что я установил настройки, firefox по-прежнему всплывает диалоговое окно загрузки. Почему это так и как я могу избежать этого поведения?

1 Ответ

1 голос
/ 19 марта 2020

Исходя из сайта и ссылки, которую вы готовите, вы загружаете не CSV-файл, а в основном ZIP-файл с расширением .Z.

Вам необходимо изменить код для предпочтения browser.helperApps.neverAsk.saveToDisk, чтобы разрешить ответ полученные с сайта, как показано ниже.

profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...