2012-01-12 38 views
0

之前,我想写一个黄瓜测试,以确保没有从指南针CSS错误。选择体:使用RSpec/XPath的/ CSS

错误信息插入到页面下面的CSS如:

body:before { 
    white-space: pre; 
    font-family: monospace; 
    content: "Syntax error: Undefined mixin 'horizontal-list'"; 
} 

所以我想写的是保证身体步:之前的内容是空的,我一直在试图围绕着变化以下:

page.should_not have_css("body:before") 

但是这给了错误:

xmlXPathCompOpEval: function before not found 

有人知道如何掌握:之前?

+0

我认为这与它是一个伪元素,而不是真正的HTML元素做。 – BoltClock 2012-01-12 13:58:20

+0

是的,我得出了同样的结论 - 尽管我明白了为什么have_xpath会因为我期望的has_css工作而感到不安! – Ash 2012-01-12 14:02:51

回答

0

一番搜索,我不认为有一种方式来获得在内容的保持后:前一种优雅的方式。不过,我有一些作品不够好,我的目的,所以我想与大家分享吧:

Then /^I should not see any compass errors$/ do 
    page.evaluate_script("document.styleSheets[1].cssRules[0].selectorText == \"body:before\";").should be_false; 
end 

上述试验如果第一cssRule指定规则有身体selectorText:前 - 这是真的,如果指南针已在页面中插入错误。

一些注意事项,如果你想使用上述:

  1. 根据您的驱动程序,您可能需要把@javascript标签上您的方案(否则,你可能会得到一个NotSupportedByDriverError除外)
  2. 数组指数样式表可能是您(根据您的样式表导入的顺序)
  3. 如果您正在使用Internet Explorer作为测试浏览器,你将需要更改JS不同 - 在这里看到:https://stackoverflow.com/a/311437/91205
  4. 我已经碰到一个Safari和Firefox之间的区别 - Safari的selectorText为“body :: before”,而Firefox有“body:before”(注意:vs::)其他浏览器可能有类似的问题。

如果有人有更好的方式来做到这一点知道,我会很感兴趣 - 但现在,上面会停止任何北斗错误偷偷通过!