使用Selenium手动下载文件 - PhantomJS

时间:2016-05-07 11:58:10

标签: java selenium phantomjs

我正在尝试使用selenium WebDriver和ChromeDriver以及PhantomJSD(用于后台模式)下载一些.xls文件。它适用于ChromeDriver,但PhantomJS不会下载该文件。

那么我的代码简单就是登录一些网站并单击此按钮:

<button id="btnExcelExport" aria-label="יצוא נתונים" class="" data-tooltip="יצוא לאקסל"> </button>

单击按钮后,使用链接

创建框架
<iframe src="/Online/ExportExcel.ashx?ExportParameter=ExportToExcel&amp;Action=75273143-ee19-47ad-91ac-1377fe3c8875&amp;Alias=428" style="display: none;"></iframe>

由于我发现PhantomJS不支持下载,我尝试使用此代码link手动下载文件,并进行一些小修改以使其与我的代码相匹配。

结果,它下载了登录页面的html文件代码。

如何设法下载此文件?

(或者我应该放弃PhantomJS,但我找不到一个简单的重复...)

谢谢!

1 个答案:

答案 0 :(得分:2)

我过去曾经遇到过这篇文章(http://collectiveidea.com/blog/archives/2012/01/27/testing-file-downloads-with-capybara-and-chromedriver/)。它主要描述了如何为下载设置chrome驱动程序的配置文件首选项。毕竟,驱动程序只是运行您的原生chrome二进制文件。我希望这有助于你的调查。

总之,这样的事情应该告诉你的司机下载地址:

require "selenium/webdriver"

Capybara.register_driver :chrome do |app|
  profile = Selenium::WebDriver::Chrome::Profile.new
  profile["download.default_directory"] = "YOUR_DOWNLOAD_PATH"
  Capybara::Selenium::Driver.new(app, :browser => :chrome, :profile => profile)
end

Capybara.default_driver = Capybara.javascript_driver = :chrome

现在你要处理的只是上面链接描述的下载过程。本文中描述的过程是用Ruby编写的,但应该很容易翻译成任何其他语言。