如何在chromedriver中禁用内置的pdf-viewer

时间:2018-03-26 14:27:43

标签: ruby automated-tests selenium-chromedriver watir

我正在使用Ruby,Watir和Chromedriver。我需要在我的网络测试中的pdf链接中clicingk时禁用pdf-viewer。我试了很多不同的设置,如:

prefs = {
    plugins: {
      plugins_disabled: ['Chrome PDF Viewer']
    },
    download: {
      prompt_for_download: false,
      directory_upgrade:   true,
      default_directory:   '/pdf_downloads'
    }
}
@browser = Watir::Browser.new :chrome, :prefs => prefs

或者

prefs= {
  'profile' => {
  'default_content_setting_values' => {'automatic_downloads' => 1}
  }
}
@browser = Watir::Browser.new :chrome, :prefs => prefs

有人可以提供一些提示或建议吗?

3 个答案:

答案 0 :(得分:2)

您可以通过启用always_open_pdf_externally设置来禁用PDF查看器。这将导致文件被下载。

prefs = {
  plugins: {
    always_open_pdf_externally: true
  }
}
browser = Watir::Browser.new :chrome, prefs: prefs

答案 1 :(得分:0)

您无法禁用PDF查看器,但可以在窗口中循环并关闭PDF窗口。

答案 2 :(得分:0)

感谢您的回答。

我测试的背景是检查网络上可用的pdf是否与引用的pdf相同。最后检查下载的pdf是否与作为参考的pdf相同,我最好的选择是阅读两个内容并在它们之间进行比较。我创造了一个简单的小功能

def pdf_text(url_file_input)
  pdf_text = Array.new
  io = open(url_file_input)
  reader = PDF::Reader.new(io)
  reader.pages.each do |page|
   pdf_text << page.text
  end
  return pdf_text
end

后来使用expect进行比较:

expect(pdf_text("url_to_file.pdf")).to eql(pdf_text('path_to_file.pdf'))