如果文件由 javascript 提供服务,如何使用 WebClient 下载文件

Ame*_*eto 5 .net javascript c# selenium-webdriver

我正在编写一个基于 Selenium WebDriver 的自动化 UI 测试解决方案。我需要一种独立于浏览器的方法,可以实现文件下载。

我的方法依赖于 System.Net.WebClient 类,如果存在属性(例如hrefsrc) ,则可以成功从站点下载文件推断文件位置的

但是,当通常保存引用的元素没有指向文件的指针时,我遇到了问题。相反,该元素有一个与 Javascript 单击事件相关联的 CSS 类。单击该元素时,Javascript 会在动态创建的链接上触发window.open操作。

关于如何从我的 C# 代码中成功捕获该文件引用有什么想法吗?

Eri*_*ham 0

如果我理解正确,那么您正在构建客户端应用程序,而服务器行为超出了您的控制范围。您想要模仿真实浏览器的以下行为:

  1. 客户端导航到 URL。
  2. 客户端单击触发 JavaScript 函数的链接(或其他元素)。
  3. JavaScript 函数将客户端重定向到正确的 URL 以下载资产。
  4. 客户端下载资产。

您无法使用WebClient类执行此操作,该类不会公开任何单击行为或任何执行 JavaScript 的方式。WebClient 实例不是浏览器。它只是一个类,提供了一种向给定 URL 发送数据和从给定 URL 接收数据的方法。

这并不能直接回答你的问题,但有一点需要指出,当使用自动化工具时,你应该坚持通过 IE 工具完成的事情,你应该使用浏览器来做你需要做的任何事情。如果由于某种原因您确实需要下载该单击事件的结果,但无法通过 selenium 执行此操作,那么您可能需要使用无头浏览器。 这个问题讨论了您可以使用的一些选项。

这个问题讨论了更多的选择。