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

标签 javascript c# .net selenium-webdriver

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

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

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

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

最佳答案

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

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

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

这并没有直接回答你的问题,但有一些论点表明,当使用自动化工具时,你应该坚持通过工具 IE 可以完成的事情,你应该使用浏览器来做任何你需要做的事。如果由于某种原因你真的需要下载那个点击事件的结果,但不能通过 selenium 这样做,那么你可能需要使用 headless 浏览器。 This question讨论了您可以使用的一些选项。

This question讨论了更多选项。

关于javascript - 如果由 javascript 提供服务,如何使用 WebClient 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31463759/

相关文章:

.net - 绕过 WPF 渲染瓶颈

java - 带有投影的JAVA中的OData REST API

javascript - 如何使用nodejs在mongodb集合中搜索重音字符

javascript - 方法 toString 是未定义的 JavaScript

javascript - .html?option ="name"脚本故障

c# - ObservableCollection 教程?

javascript - 重新加载 Flexslider

c# - 从列表中填充 datagridview 并编辑列表(添加)

c# - ASP.NET/Visual Studio 2010 中的 Crystal 报表

.net - 在 JSON.NET 中编码变音