2015-07-28 105 views
1

我想使用硒下载PDF格式的铬。如何使用硒webdriver在铬下载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); 

我想上面的代码,但您使用Adobe Acrobat/Adob​​e Reader软件显示PDF文件它不工作

+1

为什么它不工作?哪里有问题?也许有些调试器使用?或某些函数调用的错误状态?你为了解决问题而尝试过什么? –

+0

其实当我点击一个按钮时,pdf应该自动下载,在以前的浏览器版本中它可以正常工作。我的浏览器进行了更新和PDF是开放的,而不是仅通过禁用PDF阅读器,但更新浏览器我越来越即使插件处于禁用状态问题后下载 –

回答

0

?如果是这样,那么您可能需要修改Abode的行为。

这里是我不得不采取的步骤:

  1. 打开Adobe Reader时
  2. 编辑菜单,首
  3. Selcet互联网从类别列表中的浏览器
  4. 取消选中显示PDF
  5. 新闻确定

您还可以禁用A Chrome中的dobe插件,这将强制Chrome下载PDF。

它在chrome://插件下。

但正如您所说的最新的Chrome浏览器,然后检查是否在插件中显示Chrome浏览器视图,如果是禁用它。

  • 禁用 “Chrome PDF查看器” 或取消总是允许运行复选框尝试两种

enter image description here

+0

以前我那样做了。第二件事是,如果我不喜欢在adobe中检查pdf浏览器,我可能会得到在IE –

+0

概率,然后你可以做到这一点,当有史以来硒代码运行它应该禁用所有扩展只需通过您的硒代码尝试此链接http://stackoverflow.com/questions/14049151/how-to-disable-chrome-extension-in-selenium – fahad

+0

你可以试试这个使用机器人类并按ctrl + S来保存pdf,然后点击从机器人输入,将PDF保存在硬盘?试试这个 – fahad

0

你需要下面的语句添加到您的Chrome个人资料:

chromePrefs.put("pdfjs.disabled", true); 

看来,浏览器的新版本正在内置在浏览器中显示PDF文件的能力。有关更多信息,请参阅this,虽然它是针对Firefox的配置文件,但仍然是一个很好的阅读。

希望能够解决您的问题,否则您可能需要降级您的Chrome以使其正常工作。如果您有任何疑问,请告诉我。

+0

对于Firefox我使用相同的代码即ff配置文件。我与该命令也试过,但没有使用 –

2

由于chrome 57的自动pdf预览不再作为一个插件使用,现在有一个设置可以改变,使这项工作。您可以通过检查chrome自己的首选项对话框来检查pref的名称,在“内容设置”下标记为“在默认PDF查看器应用程序中打开PDF文件”。 automatic pdf open pref

您可以设置为false,以避免自动PDF预览,像这样(红宝石为例):

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 
    ) 
+0

这在Ruby的工作非常适合我。谢谢@rogercampos一百万! – westonplatter

1

你可能会加载这个页面,并使用硒导航更改设置:

chrome://settings/content/pdfDocuments