我正在编写一个基于 Selenium WebDriver 的自动化 UI 测试解决方案。我需要一种独立于浏览器的方法,可以实现文件下载。
我的方法依赖于System.Net.WebClient类,如果有一个属性(例如href或src)可以成功地从站点下载文件从中推断文件位置。
但是,当通常保存引用的元素没有指向文件的指针时,我遇到了问题。相反,此元素有一个 CSS 类,该类绑定(bind)到 Javascript 单击事件。单击该元素时,Javascript 会在动态创建的链接上触发 window.open 操作。
关于如何从我的 C# 代码中成功捕获该文件引用有什么想法吗?
最佳答案
如果我对您的理解正确,您正在构建客户端应用程序,而服务器行为超出您的控制范围。您想模仿真实浏览器的以下行为:
- 客户端导航到一个 URL。
- 客户点击一个链接(或其他元素)触发 JavaScript 函数。
- JavaScript 函数将客户端重定向到正确的 URL 下载 Assets 。
- 客户端下载 Assets 。
您不能使用 WebClient 执行此操作类,它不会暴露任何点击行为或任何执行 JavaScript 的方式。 WebClient 实例不是浏览器。它只是一个提供向给定 URL 发送数据和从给定 URL 接收数据的方法的类。
这并没有直接回答你的问题,但有一些论点表明,当使用自动化工具时,你应该坚持通过工具 IE 可以完成的事情,你应该使用浏览器来做任何你需要做的事。如果由于某种原因你真的需要下载那个点击事件的结果,但不能通过 selenium 这样做,那么你可能需要使用 headless 浏览器。 This question讨论了您可以使用的一些选项。
This question讨论了更多选项。
关于javascript - 如果由 javascript 提供服务,如何使用 WebClient 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31463759/