我正在尝试使用带有ChromeDriver和PhantomJSD的Selenium WebDriver下载一些.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驱动程序的配置文件首选项以进行下载。毕竟,驱动程序只是在运行本机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编写的,但应轻松转换为任何其他语言。