Не удается избавиться от уведомления «держать / отменить» при загрузке файлов «.eml» - PullRequest
0 голосов
/ 02 февраля 2019

Как мне избавиться от этого keep/discard уведомления при загрузке файлов с помощью python selenium chromedriver?

Я пробовал следующее, но не удалось:

chromeOptions = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chromeOptions.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=chromeOptions)

РЕДАКТИРОВАТЬ: Кажется, я обнаружил, что другой веб-сайт имеет такой файл ".eml", который выдает такое же уведомление при нажатии на эту ссылку, заканчивающуюся .eml.

Пример ссылки на веб-сайт

Я пытаюсь использовать следующий подход:

from selenium import webdriver

url = "https://www.online-convert.com/file-format/eml"

dirf = r"C:\Users\WCS\Desktop\emlfolder"

def download_file(link):
    driver.get(link)
    driver.find_element_by_css_selector("a[href$='example.eml']").click()

if __name__ == '__main__':
    chromeOptions = webdriver.ChromeOptions()
    prefs = {'download.default_directory' : dirf}
    chromeOptions.add_experimental_option('prefs', prefs)
    driver = webdriver.Chrome(chrome_options=chromeOptions)
    download_file(url)

Уведомление в точности выглядит как на изображении ниже:

enter image description here

Кстати, я инициирую щелчок по этой ссылке для загрузки только потому, что на сайте, с которым я экспериментировал, не было истинного URL, связанного с этими ".eml" файлами для навигации.Оказывается, переход по этой ссылке ".eml" также приводит к тому же уведомлению.

Ответы [ 7 ]

0 голосов
/ 02 марта 2019

Я попробовал Google много сайтов / форумов и нашел приведенный ниже код, но он все еще не работает в Chrome 72. Пожалуйста, дайте мне знать, если вы найдете какое-либо лучшее решение для этой проблемы.

System.setProperty("webdriver.chrome.driver", "chromedriver.exe file path")
String downloadFilepath = "C:\\Downloads";
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
chromePrefs.put("safebrowsing.enabled", "false"); 
chromePrefs.put("download.prompt_for_download", "false");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("--safebrowsing-disable-download-protection");
options.addArguments("--safebrowsing-disable-extension-blacklist");
options.addArguments("disable-extensions");
options.addArguments("test-type");
options.addArguments("start-maximized");
options.setExperimentalOption("prefs", chromePrefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);  
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
driver = new ChromeDriver(capabilities);
0 голосов
/ 05 марта 2019

Я использовал простые клавиши TAB и ENTER, чтобы воздействовать на кнопки Keep / Discard в окне.Я не нашел лучшего решения для этой проблемы, и он работает для меня как обходной путь.

if (File_Extn.contentEquals("msg")) // put extns like msg, pdf etc.. 
                    {           
                        for (int j=1; j<=TabCount; j++) // manually count total no. of tabs and replace with TabCount to reach keep button
                        {   
                            sleep(1);
                            System.out.println("hit tab keys to reach keep/discard button");
                            robot.keyPress(KeyEvent.VK_TAB);
                        }
                        System.out.println("hit enter key to click on keep button");
                         robot.keyPress(KeyEvent.VK_ENTER);
                    }
0 голосов
/ 08 февраля 2019

Вы можете попробовать добавить сайт в список доверенных сайтов Chrome. Если я понимаю ваш код, он использует вашу установку Chrome, что будет означать, что если вы измените настройки в Chrome, модуль Python будет использовать их.

Chrome

Щелкните значок 3 горизонтальных линий в крайнем правом углу адресной строки.

Нажмите Настройки, прокрутите вниз и нажмите ПоказатьСсылка «Дополнительные настройки».

Нажмите «Изменить параметры прокси».

Перейдите на вкладку «Безопасность»> значок «Надежные сайты», затем нажмите «Сайты».

Введите URL-адрес своего доверенного сайта, затемнажмите Добавить.

Нажмите Закрыть> ОК.

0 голосов
/ 05 февраля 2019

В соответствии с этим: Как отключить «Этот тип файла может нанести вред вашему компьютеру» всплывающее окно вам потребуется несколько вариантов:

Принятый ответ перестал работать послеНедавнее обновление Chrome.Теперь вам нужно использовать ключи командной строки --safebrowsing-disable-extension-blacklist и --safebrowsing-disable-download-protection.

Но всякий раз, когда кто-то из Google задумывается о проблемах безопасности, связанных с опцией, он будет изменять поведение в следующей версии Chrome.Я использую Chrome 72, и вышеупомянутые опции больше не отключают уведомление.

Краткая версия: Не пытайтесь отключить меры безопасности.Авторы вредоносных программ обучены этому, и любой хороший разработчик браузера, кажется, считает, что «лучше, чем потом сожалеть».

Если вам действительно нужно просто решение для загрузки, вы можете использовать модуль запросов и загрузить без Chrome:

from selenium import webdriver
import requests

url = "https://www.online-convert.com/file-format/eml"

dirf = r"C:\Users\WCS\Desktop\emlfolder"

def download_file(link):
    driver.get(link)
    linkElement = driver.find_element_by_css_selector("a[href$='example.eml']")
    r = requests.get(linkElement.get_attribute('href'))
    file = open("C:\Users\WCS\Desktop\emlfolder\example.eml", 'wb')
    file.write(r.content)
    file.close()

if __name__ == '__main__':
    chromeOptions = webdriver.ChromeOptions()
    prefs = {'download.default_directory' : dirf}
    chromeOptions.add_experimental_option('prefs', prefs)
    driver = webdriver.Chrome(chrome_options=chromeOptions)
    download_file(url)
    driver.quit()
0 голосов
/ 04 февраля 2019

Вам необходимо указать расширение файла, которое вы хотите скачать

prefs = {
    'download.default_directory': dirf,
    'download.prompt_for_download': False,
    'download.extensions_to_open': 'eml',
    'safebrowsing.enabled': False
}

options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options)
0 голосов
/ 02 февраля 2019

вы можете попытаться добавить следующий аргумент

chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--safebrowsing-disable-download-protection')
driver = webdriver.Chrome(chrome_options=chromeOptions)
0 голосов
/ 02 февраля 2019

Это всплывающее окно, связанное с безопасным просмотром.попробуйте

  chromeOptions = webdriver.ChromeOptions()
  prefs = {'safebrowsing.enabled': 'false'}
  chromeOptions.add_experimental_option("prefs", prefs)
  driver = webdriver.Chrome(chrome_options=chromeOptions)
...