首页 > 解决方案 > Capybara 和文本溢出:省略号

问题描述

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

有类似问题的人吗?有没有办法可以测试这个?

标签: csscapybaraellipsis

解决方案


Capybara 取决于驱动程序返回的文本。驱动程序正在尝试满足 WebDriver 规范对要返回的文本的定义,该定义当前在https://w3c.github.io/webdriver/#get-element-text中定义。该规范声明它旨在“按渲染”返回文本,但bot.dom.getVisibleText作为标准给出的文本目前并未考虑text-overflow在内。这意味着到目前为止,Capybara 对此无能为力,也没有办法直接对其进行测试。


推荐阅读