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

时间:2015-07-16 20:17:50

标签: javascript c# .net selenium-webdriver

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

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

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

有关如何从C#代码成功捕获该文件引用的任何想法?

1 个答案:

答案 0 :(得分:-2)

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

  1. 客户端导航到网址。
  2. 客户端点击触发a的链接(或其他元素) JavaScript函数。
  3. JavaScript函数将客户端重定向到正确的URL 下载资产。
  4. 客户端下载资产。
  5. 您无法使用WebClient类执行此操作,该类不会公开任何点击行为或执行JavaScript的任何方式。 WebClient实例不是浏览器。它只是一个类,它提供了一种向给定URL发送数据和从给定URL接收数据的方法。

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

    This question讨论了更多选项。