我想使用selenium在chrome中下载pdf。
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")
+ System.getProperty("file.separator")
+ "BrowserDrivers"
+ System.getProperty("file.separator")
+ "chromedriver.exe");
String downloadFilepath = "C:\\Users\\Vinod\\Downloads";
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
//Save Chrome Opions
ChromeOptions options = new ChromeOptions();
HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>();
options.setExperimentalOption("prefs", chromePrefs);
options.addArguments("--test-type");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap);
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(ChromeOptions.CAPABILITY, options);
driver = new ChromeDriver(cap);
driver.get(url);
我尝试了上面的代码,但它无法正常工作
答案 0 :(得分:4)
您可以加载此页面并使用selenium导航更改设置:
chrome://settings/content/pdfDocuments
答案 1 :(得分:3)
由于chrome 57自动pdf预览不再作为插件工作,现在有一个设置可以更改以使其工作。您可以通过检查chrome自己的首选项对话框来实际检查pref的名称,在“内容设置”下,标记为“在默认PDF查看器应用程序中打开PDF文件”。
您可以将其设置为false以避免自动pdf预览,如下所示(ruby示例):
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
"chromeOptions" => {
'args' => ['disable-gpu', "--window-size=1920,1080"],
prefs: {
"download.prompt_for_download": false,
"download.directory_upgrade": true,
"plugins.always_open_pdf_externally": true,
"download.default_directory": DownloadHelpers::PATH.to_s
}
}
)
Capybara::Selenium::Driver.new(
app,
browser: :chrome,
desired_capabilities: caps
)
答案 2 :(得分:1)
您需要在Chrome个人资料中添加以下语句:
chromePrefs.put("pdfjs.disabled", true);
似乎新版本的浏览器具有在浏览器中显示PDF文件的内置功能。有关详细信息,请参阅this,尽管它适用于firefox配置文件,但仍然可以很好地阅读。
希望能解决您的问题,否则您可能需要降级Chrome以使其正常工作。如果您有任何疑问,请与我们联系。
答案 3 :(得分:0)
您使用Adobe Acrobat / Adobe Reader显示PDF吗?如果是这样,那么可能需要修改Abode的行为。
以下是我必须采取的步骤:
答案 4 :(得分:0)
这是使用.NET的任何人的C#选项
var tsTimeout = new TimeSpan(0, 5, 0);
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddUserProfilePreference("download.default_directory", _downloadFolder);
chromeOptions.AddUserProfilePreference("download.prompt_for_download", false);
chromeOptions.AddUserProfilePreference("download.directory_upgrade", true);
chromeOptions.AddUserProfilePreference("plugins.plugins_disabled", "Chrome PDF Viewer");
chromeOptions.AddUserProfilePreference("plugins.always_open_pdf_externally", true);
_driver = new ChromeDriver(CWebCrawler.WebCrawlerRootFolder, chromeOptions, tsTimeout);