Сохраните PDF вместо открытия в Selenium

Я использовал код, который всегда загружал PDF. С недавних пор он начал открывать PDF внутри браузера. То же самое происходит и для Chrome и Firefox.

В хроме я уже пробовал:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--disable-extensions"));
driver = new ChromeDriver(capabilities);

И в Firefox я попробовал:

FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList", 2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
firefoxProfile.setPreference("browser. download. manager. useWindow",true);
firefoxProfile.setPreference("plugin.disable_full_page_plugin_for_types", "application/pdf");
firefoxProfile.setPreference("browser.download.dir","C:\\Documents and Settings\\xxxx\\My Documents\\Downloads");
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf;text/plain;text/csv");
firefoxProfile.setPreference("pdfjs.disabled", true);
firefoxProfile.setPreference("browser.helperApps.alwaysAsk.force",false);
firefoxProfile.setPreference("plugin.scan.plid.all",false);
firefoxProfile.setPreference("plugin.scan.Acrobat","99.0");

Но, тем не менее, оба браузера открывают PDF вместо его сохранения.

Есть идеи?

3 ответа

В основном измените параметры, как показано ниже:

// this will make automatically download to the default folder.
chromeOptions.AddUserProfilePreference("plugins.always_open_pdf_externally", true);

C# Selenium Saving pdf page

Я могу показать вам, как мы это сделали в Ruby, и, надеюсь, вы сможете перевести его, чтобы он соответствовал вашему Java (?) Коду. Главное - выяснить, какие ключи предпочтения установить.

Capybara.register_driver :selenium_chrome_downloads do |app|
  prefs = {
    plugins: {
      plugins_disabled: ['Chrome PDF Viewer']
    },
    download: {
      prompt_for_download: false,
      default_directory: 'desired/download/path'
    }
  }
  Capybara::Selenium::Driver.new(app, browser: :chrome, prefs: prefs)
end
Capybara::Session.new(:selenium_chrome_downloads)

Это сопоставляется со строками предпочтений, такими как "plugins.plugins_disabled", "download.prompt_for_download" и "download.default_directory"

Полезные документы: https://sites.google.com/a/chromium.org/chromedriver/capabilities (в основном Java) https://code.google.com/p/selenium/wiki/RubyBindings (для Ruby)

Более новое решение:

  1. Открытый хром

  2. Перейти к: плагины

  3. Нажмите на ссылку "Отключить" в плагине Chrome Pdf Viewer

  4. Делайте все, что вам нужно.


Вы можете создать веб-запрос и сохранить ответ в файл

Пример C# для получения изображения из URL:

string webPath = "http://www.someasress.com/asdf.png";

                if (webPath != string.Empty)
                {
                    try
                    {
                        System.Net.WebRequest request =
                            System.Net.WebRequest.Create(webPath);

                        System.Net.WebResponse response = request.GetResponse();

                        System.IO.Stream responseStream = response.GetResponseStream();

                        Bitmap bitmapImg = new Bitmap(responseStream);

                        return bitmapImg;
                    }
                    catch (System.Net.WebException)
                    {
                    }
                }
Другие вопросы по тегам