通过未明确设置的css属性查找元素

时间:2015-05-08 18:00:57

标签: javascript css-selectors phantomjs karma-jasmine

为了disable chrome autofill我在输入表单中添加了不可见的用户/密码字段:

BuildTestTargets.cmake

问题在于这会打破以下测试:

<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>

现在有12个输入字段。我可以使用

轻松计算不可见的输入字段
expect(element.find('input').length).toBe(10);

为了修复测试,我需要找到没有设置显示属性的输入字段。遗憾的是,expect(element.find('input[style="display:none"]').length).toBe(2); 返回0。我需要像

这样的东西
element.find('input[style="display:inline"]').length

有任何建议如何实现这一目标?

编辑:我已经测试了所有可能的显示值。除了display:none

之外,它们似乎都不适用于我的输入表单
expect(element.find('input[style="!display"]').length).toBe(10);

2 个答案:

答案 0 :(得分:1)

您可以使用:not()选择器:

expect(element.find('input:not([style="display:none"])').length).toBe(10);

问题似乎是,你需要根据DOM匹配元素而不是它们的计算样式。因此,只要您不想计算的元素实际上包含确切的字符串&#34; display:none&#34;在他们的风格属性。

答案 1 :(得分:0)

:visible Selector怎么办?

expect(element.find('input:visible').length).toBe(10);