我正在尝试使用 selenium WebDriver 与 ChromeDriver 和 PhantomJSD(用于后台模式)下载一些 .xls 文件。它与 ChromeDriver 完美配合,但 PhantomJS 不下载该文件。
所以我的代码只需登录某个网站并单击此按钮:
<button id="btnExcelExport" aria-label="יצוא נתונים" class="" data-tooltip="יצוא לאקסל">
</button>
单击按钮后,将创建一个带有链接的框架:
<iframe src="/Online/ExportExcel.ashx?ExportParameter=ExportToExcel&Action=75273143-ee19-47ad-91ac-1377fe3c8875&Alias=428" style="display: none;"></iframe>
由于我发现PhantomJS不支持下载,所以我尝试使用此代码link手动下载文件。进行一些小的修改以使其与我的代码相匹配。
结果,它下载了登录页面的html文件代码。
我怎样才能下载这个文件?
(或者我应该放弃 PhantomJS,但我找不到简单的替代方案..)
谢谢!
最佳答案
我过去读过这篇文章 ( http://collectiveidea.com/blog/archives/2012/01/27/testing-file-downloads-with-capybara-and-chromedriver/ )。它本质上描述了如何设置 chrome 驱动程序的配置文件首选项以进行下载。毕竟,驱动程序只是运行您的 native 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 编写的,但应该很容易翻译成任何其他语言。
关于java - 使用 Selenium 手动下载文件 - PhantomJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37088235/