11

我试图为其创建步骤定义的要求之一是每个元素都应该被编号。是否有用于检查项目是否具有正确的 CSS 生成内容的 API?

我们正在使用 Selenium、Cucumber 和 Capybara 来测试我们的应用程序。

我们想要自动测试的 CSS:

ul {
    counter-reset: steps;
}

li:before {
    content: counter(steps) ".";
    counter-increment: steps;
}

或者,我们可以将实际内容放在 DOM 中,但我不喜欢仅仅为了满足 webdriver 而编写代码,这是解决编号问题的一个很好的解决方案,或者坚持手动测试这种行为。

编辑: 澄清一下,我认为这将需要一个外部 API 来查询,例如 Selenium Webdriver,因为 getComputedStyle 不返回实际呈现的内容:http: //jsfiddle.net/yTUnt/

4

1 回答 1

1

很明显,没有允许查询计数器值的公共标准接口:

自最初提出这些问题以来,那里或其他任何地方都没有证据表明情况发生了变化,并且现在可以做到这一点。

也许我们可以使用浏览器向其自己的测试套件公开的私有 API 来检查我们的应用程序是否完成了它应该做的事情,但是私有 API 可能会在浏览器的开发人员需要时更改或消失,并且这些 API 通常特定于浏览器。

没有迹象表明 WebDriver 本身挂钩到任何私有 API 以提供此类功能。

有一个选项不依赖私有 API,并且不需要污染 DOM 或自己执行编号。这个选项是首先手动确定需要在我们的元素上设置哪些 CSS 参数以获得我们想要的结果,然后在测试套件中验证这些参数在运行时确实存在。我在这里有一个例子,基于问题中提供的小提琴。在示例中,一个列表接收自定义编号,因为它具有一旦应用了所有适用的样式,我们就可以验证对感兴趣的元素应用了什么。因此,我们可以检测元素是否由于 CSS 中的拼写错误、属性中的拼写错误或 CSS 规则相互干扰而没有获得正确的 CSS 参数。custom类。第二个列表无法获得我们想要的编号,因为(模拟的)错字,它有costum类。通过使用getComputedStylestyle

在示例中,检查是在浏览器端执行的。Ruby 中的 Selenium 等价物是使用该css_value方法来获取我们感兴趣的参数的值。

于 2013-11-30T16:33:25.143 回答