【问题标题】:Save entire web page with all assets in Selenium WebDriver使用 Selenium WebDriver 中的所有资产保存整个网页
【发布时间】:2014-01-03 08:59:20
【问题描述】:

我正在寻找一种方法将网页的当前 DOM 状态保存到一个单独的 .html/.mht 文件中,其中包含所有图像、JavaScript 和 CSS 文件。

我知道driver. PageSource / driver.getPageSource() 允许获取当前的 DOM 状态,但是如何保存所有静态/动态引用的图像、JavaScript 文件、CSS 文件和其他资产?

例如,为什么我需要这个:

例如,Web 应用程序是一个Single Page Application,基于 KnockoutJS 框架。
当测试执行过程中发生错误时,我希望 HTML 页面包含所有动态生成的内容,以便调查问题。

当我执行静态 HTTP 下载时——它总是给我项目登录页面,而不是当前打开的文档。

【问题讨论】:

  • 我认为这将是一个自定义解决方案,很像 Chrome 上的 Save As... -> Webpage, Complete 功能。据我所知,没有解决方案可以做到这一点。只需找到每个 <script /> <img /><link /> 并保存这些文件
  • Dmytro,你能解决这个问题吗?我的用例需要这个
  • 一些 JavaScript 魔法可以解决问题stackoverflow.com/questions/22368613/…

标签: java .net selenium knockout.js selenium-webdriver


【解决方案1】:

好的,我认为您可能以错误的方式思考这个问题。下载整个内容并不能解决您的问题。

Selenium 是一个非常好的工具,可以根据故事和需求从用户角度了解软件中的缺陷,但是当涉及到潜在问题和调查时,您将需要合适的工具来完成工作。

幸运的是,如果您使用的是 KO 和 MVVM 模式,那么您将受益于一种非常适合单元测试的代码结构,这正是您调查问题所在而不是应用程序的快照代码所需要的。

如果您为视图模型中的所有方法(或至少是重要的方法)编写了良好的单元测试覆盖率(jasmine.js 非常易于使用),您可以只运行您的测试套件,然后当 selenium 测试失败时查看哪些单元测试也失败了,这将使您更快地找到解决方案。

这里有一些资源供您查看:

KnockoutJS and Testing

http://machadogj.com/2011/10/unit-testing-wit-knockout-js-with-tdd.html

【讨论】:

  • 感谢您的建议并提出替代方法。在我的情况下,我显然需要保存网页。
猜你喜欢
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2020-04-21
  • 1970-01-01
  • 2016-05-30
  • 2019-05-12
  • 1970-01-01
相关资源
最近更新 更多