场景:尝试通过capybara访问外部URL以下载文件。必须使用Selenium或webkit作为驱动程序。不能使用机架测试,因为它不允许访问外部网址。
该网站使用iframe。
通过javascript提示文件下载:
<a href="javascript:OpenFile('****.pdf', 2)">some_text_here</a>
单击该链接会提示本机浏览器下载确认框。 我尝试了以下方法: Selenium驱动程序:
使用自定义配置文件 - &gt;没有效果,弹出窗口仍然出现
Capybara.register_driver :selenium do |app|
profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.dir'] = "~/Downloads"
profile['browser.helperApps.neverAsk.saveToDisk'] = "application/pdf"
Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => >profile)
end
点击链接前使用javascript-&gt;没效果
within_frame(1) do
page.evaluate_script('window.confirm = function() { return true; }')
find(:xpath,"//span[@class='BoldText']/a").click
end
尝试使用提醒 - &gt;即使出现下载框也找不到
page.driver.browser.switch_to.alert.accept
-> No alert is present
Webkit驱动程序:
尝试使用javascript - &gt;文件未被下载
page.accept_confirm找不到任何链接
如何下载文件?
答案 0 :(得分:0)
应用程序使用application / octet-stream类型报告文件。添加
profile['browser.helperApps.neverAsk.saveToDisk'] = "application/pdf, application/octet-stream"
在这种情况下解决了问题。