我正在尝试使用带有ChromeDriver和PhantomJSD的Selenium WebDriver下载一些.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,但找不到简单的方法。)

谢谢!

最佳答案

我过去曾经看过这篇文章(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编写的,但应轻松转换为任何其他语言。

09-04 15:05
查看更多