【问题标题】:Capybara and text-overflow: ellipsisCapybara 和文本溢出:省略号
【发布时间】: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
    bbb
    并且 b 类具有可见性:隐藏,那么 aaa 的文本是“aaa”,而不是"aaabb"
  • @Pete,不是css问题,是Capybara+css问题。我的课程确实有溢出隐藏和空白 nowrap,但它与我的问题无关,所以我错过了,我将编辑我的问题。
  • @Jeni 这取决于水豚的工作方式。我指的是文档源代码,它仍然包含完整且未修改的文本。

标签: css capybara ellipsis


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 2019-03-06
    • 2018-07-22
    • 1970-01-01
    • 2016-01-31
    • 2013-04-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多