【发布时间】:2019-11-03 01:50:51
【问题描述】:
有没有什么好的工具或方法可以自动测试css选择器?
我正在开发一个 SCSS 框架,并希望在其中包含自动化测试。 具体来说,我想进行测试以确保 css 选择器正常工作。
比如说我有 html:
<input class="btn" disabled id="test"></input>
和css
.btn {
color: red;
...
}
.btn:disabled {
color: green;
...
}
我想进行一个测试,以确保上面带有 id=test 的元素,将 .btn:disabled 作为具有最高优先级的 css 类(具有最高特异性的最后一个类)和 .btn 作为第二高优先级。换句话说,我想确保 .btn:disabled 和 .btn css 样式应用于元素,并且 .btn:disabled 中的样式会覆盖 .btn 中的样式。
我正在考虑在 selenium 中执行此操作。有什么好的方法可以做到这一点吗?我不想将 css 值硬编码到测试中。
【问题讨论】:
-
“我想要一个测试,确保 id=test 的元素,将 .btn:disabled 作为“主要”css 类,将 .btn 作为“次要” .” - 所以你想检查那个 HTML 元素是否有这个类并且设置了
disabled属性?那将纯粹是在HTML上,resp。 DOM 级别 - 这与测试选择器是否正常工作有什么关系?你不是说你想要一个测试来检查这些规则的样式是否应用于元素吗?然后使用 getComputedStyle 进行检查。 -
“将 .btn:disabled 作为“主要”css 类,将 .btn 作为“次要”类。” - 没有“主要”和“二级 CSS 课程”。解释一下你的实际意思。
-
@TorsteinI.Bø 您能否为我们提供一些参考,说明 ..."primary" css 类... 和 ..." 的确切含义次要"...
-
@04FS 我现在重新措辞,以便更清楚:-)
-
您需要使用 CSSOM 来查找您的主要目标规则。将属性值与元素的计算样式进行比较。断言它们是相同的。将规则更改为属性的不同值并再次比较。如果它们仍然相同,则您的规则是主要规则。修改规则选择器,使其不匹配。从顶部重复您的次要目标规则,以及您要测试的每个进一步的目标规则。使用 Selenium 中的 JavascriptExecutor 应该可以实现所有这些。
标签: css unit-testing selenium testing css-selectors