在 Capybara 中遍历 div class

Iterating through div class in Capybara

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

但是,到目前为止,我尝试过的代码中有 none 行得通。这是我尝试过的:

page.all(:css, 'div').each do |text|
    expect(text).to_have 'Goku'[0]
end

我正在尝试遍历页面,看看是否可以在第一列中找到文本 Goku。

这是我的 HTML 标签

<div class="uiGridCellOverflow ng-binding ng-scope">Goku</div>

预期输出: 我希望第一行有文本 'Goku'。我的期望行应该检测到第一行有 Goku。

实际输出: 现在出错

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

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

你真的有

page.all(:css, 'div').each do |div_element|
    expect(div_element).to_have('Goku'[0])
end

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

如果您真正要查找的是某些其他元素的第一个子元素并且恰好包含文本 Goku,那么您可以执行类似

的操作
page.all('* > div:first-child', exact_text: 'Goku')

找到他们。如果这不是您想要做的,请更新问题以使其更清楚。