css - 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..."
有类似问题的人吗?有没有办法可以测试这个?
解决方案
Capybara 取决于驱动程序返回的文本。驱动程序正在尝试满足 WebDriver 规范对要返回的文本的定义,该定义当前在https://w3c.github.io/webdriver/#get-element-text中定义。该规范声明它旨在“按渲染”返回文本,但bot.dom.getVisibleText
作为标准给出的文本目前并未考虑text-overflow
在内。这意味着到目前为止,Capybara 对此无能为力,也没有办法直接对其进行测试。
推荐阅读
- php - Wordpress 管理插件:是否可以阻止 Wordpress 呈现 UI?
- wordpress - 将评论页面重新路由到主博客文章页面
- rdf - 是否可以用 SHACL 描述单例属性?
- javascript - css className 比 material-ui v5 中的 css 类具有较低的特异性
- arangodb - 高效的 ArangoDB AQL 查询,可以找到集合中去往和来自相同文档的所有边
- c# - EF Core 在配置中标记一个属性并检查该属性是否包含 UoW 中的标记
- laravel - 应该如何设置 livewire 加载目标?
- reactjs - 在 vercel 上部署 nextjs 应用程序而不重新生成页面,但应请求(之后)
- azure - Synapse 专用池和行存储中的聚集索引
- python - 防止 Pandas 在赋值时解包列表