水豚和文本溢出:省略号

Capybara and text-overflow: ellipsis

对于一个元素,我设置了 "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;

}

我的水豚测试(ruby):

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..."

有人有类似的问题吗?有什么方法可以测试吗?

Capybara 取决于驱动程序 return编辑的文本。驱动程序正在尝试满足 WebDriver 规范定义,即 return 的文本,当前在 https://w3c.github.io/webdriver/#get-element-text 中定义。该规范声明它旨在 return 文本 "as rendered",但是作为标准给出的 bot.dom.getVisibleText 当前并未考虑 text-overflow。这意味着目前 Capybara 对此无能为力,也确实没有直接测试它的方法。