首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Capybara中迭代div类

在Capybara中迭代div类
EN

Stack Overflow用户
提问于 2022-04-18 19:26:04
回答 1查看 52关注 0票数 0

我有一个页面,其中包含了Capybara中的类div的多个元素,我希望能够遍历并引用第一行中的第一个文本。

但是,到目前为止,我尝试过的代码都没有起作用。以下是我尝试过的:

代码语言:javascript
复制
page.all(:css, 'div').each do |text|
    expect(text).to_have 'Goku'[0]
end

我试着在页面上循环一遍,看看能否在第一栏中找到小悟空的文本。

这是我的HTML标签

代码语言:javascript
复制
<div class="uiGridCellOverflow ng-binding ng-scope">Goku</div>

预期输出:我期望第一行有文本‘悟空’。我的expect行应该检测到第一行有小悟空。

实际输出:目前出现错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-19 00:41:39

首先,您没有class div的元素,而是div类型的元素。在讨论这些问题时,术语很重要,因为class在HTML中是不同的。第二,您提到了第一行和第一列,但是只显示了一个html元素,这使得很难准确地计算出您正在处理和试图实际做的事情。

当您使用each循环all的结果时,text引用的是单个div元素。因此,如果页面上的任何expect(text).to_have 'Goku'[0]中没有字母'G‘(不太确定您为什么在那里),它将引发异常。

你真的有

代码语言:javascript
复制
page.all(:css, 'div').each do |div_element|
    expect(div_element).to_have('Goku'[0])
end

它永远不会通过,因为页面上将有数百个(至少)不包含文本(或字母G)的div元素。

如果您真正想要找到的是其他元素的第一个子元素,并且包含文本小悟空,那么您可以这样做

代码语言:javascript
复制
page.all('* > div:first-child', exact_text: 'Goku')

去找他们。如果这不是你想要做的,那么请更新这个问题,使它更清楚。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71916190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档