java - 使用 Selenium 手动下载文件 - PhantomJS

标签 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,但我找不到简单的替代方案..)

谢谢!

最佳答案

我过去读过这篇文章 ( 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/

相关文章:

java - 如何让枚举在实现接口(interface)时使用它们的 compareTo 方法?

Java isInstance 与 instanceOf 运算符

javascript - selenium webdriver 不适用于 jasmine

java - 我如何使 if 语句中的 get 方法没有错误

c# - 如何通过 JavaScript 回调在 C# 中运行 QUnit 测试并返回测试结果?

javascript - casperjs 按钮点击不导航到下一页

java - Java 类型的方法未定义问题

java - 基于 ArrayList 的二叉树 - Java

python - ElementNotInteractableException : element not interactable error while trying to search for stock on www. finanzen.net 使用 Selenium 和 Python

selenium - 在 RPA Express 中使用 Web 元素处理和跟踪链接