9

昨天我一整天都在寻找一个可以工作的 HTML 验证器,我可以用它来检查我的 rails 应用程序生成的代码。到目前为止,我已经尝试了几种不同的策略,例如 RailsTidy,它在 Rails 1.9 中不再有效,tidy_ffi,在 Rails 控制台中运行时我很难“要求”,以及 FireFox 的 Total Validator,无论我检查什么,它总是给我同样的错误。

我的目标是检查我的代码,而不必将任何内容上传到互联网。能够从终端运行测试(我正在使用 RedHat Linux)或在正在运行的 localhost 服务器上运行测试将是最有帮助的。

为了节省自己一天(或更多)的挫败感,我在这里提出了这个问题,我想知道是否有其他人成功地使用了 Ruby on Rails 的验证器。

4

2 回答 2

6

试试我的 gem,html_acceptance。它使用 HTML Tidy 在后台进行验证。我前一阵子把它放出来了,但到目前为止,它几乎没有被注意到。它对我很有用,如果您报告问题/有功能请求,我会很乐意查看它们。

在示例中,我有一个自定义 RSpec 匹配器,因此如果您添加该自定义匹配器,在您的规范/请求的集成测试中,您可以执行以下操作:

page.should have_valid_html

这个想法是您可以在集成测试中使用它,即使您收到您不关心的轻微警告/故障(例如,TIDY 抱怨某些 IE 特定的黑客攻击),您也可以进入并接受它们,并作为只要验证结果不变,测试就会通过。

此外,您需要在路径上保持整洁。所以在 OS X 上:port install htmltidy 或 Ubuntu sudo apt-get install tidy。

于 2012-07-12T19:55:21.230 回答
3

我正在为 Ruby On Rails 应用程序开发一个一体化的 HTML/CSS 验证 gem。它的名字是猎头

从文档:

Headhunter 是一个 HTML 和 CSS 验证工具,它可以将自己注入到 Rails 功能测试中,并自动检查所有生成的 HTML 和 CSS 的有效性。

此外,它还会查找未使用的(因此是多余的)CSS 选择器。

您所要做的就是gem 'headhunter'在测试环境中添加到您的 Gemfile 中:

group :test do
  gem 'headhunter'
end

其余的都是自动为您完成的,您将在测试结束时获得应用程序有效性的统计信息,如下所示:

Validated 42 HTML pages.
41 pages are valid.
1 page is invalid.
Open .validation/results.html to view full results.

Validated 1 stylesheets.
1 stylesheet is invalid.
  application.css:
  - Invalid css: line 1: Property bla doesn't exist

Found 23 CSS selectors.
20 selectors are in use.
3 selectors are not in use: a img, #flash.failure, input[type='file']
于 2014-01-19T20:45:19.113 回答