【发布时间】:2018-08-01 10:25:57
【问题描述】:
对于一个元素,我设置了“text-overflow:ellipsis”css 属性。我想测试它是否有效:) 使用 Capybara。例如。我想检查我的长文本的结尾是否被隐藏。 示例html:
<div class="elli">Some long long long long long long text, and end.</div>
示例 css:
.elli{
text-overflow: ellipsis
white-space: nowrap;
overflow: hidden;
}
我的水豚测试(红宝石):
visit my_url
problematic_text = find(:css, ".elli").text
assert_not_match /end/, problematic_text
我得到错误:
Minitest::Assertion:Expected /end/ to not match "Some long long long long long long text, and end.".
省略号确实有效,并且文本被正确裁剪(我可以在 UI、浏览器中看到,而测试正在运行),所以问题是当我获取元素的文本时,我得到了所有它,而不是向用户显示的内容。在我看来,这与 element.text 只是显示文本的原则相冲突。我希望文本类似于:
"Some long long long l..."
有类似问题的人吗?有什么方法可以测试吗?
【问题讨论】:
-
html 元素实际上仍然包含所有文本。文本被裁剪只是一个样式选项。您还可以将可见性设置为 none 并仍然获取该节点的文本。您将需要更改您的测试。
-
text-overflow: ellipsis仅用作掩码。文本仍然存在,并且会在其他渲染中显示为 JS、ruby 或任何其他。 -
@Nico O,你说的不正确,如果我设置可见性:隐藏,则不再找到文本。例如,如果我有aaa并且 b 类具有可见性:隐藏,那么 aaa 的文本是“aaa”,而不是"aaabb"bbb
-
@Pete,不是css问题,是Capybara+css问题。我的课程确实有溢出隐藏和空白 nowrap,但它与我的问题无关,所以我错过了,我将编辑我的问题。
-
@Jeni 这取决于水豚的工作方式。我指的是文档源代码,它仍然包含完整且未修改的文本。