我有一个页面,其中包含了Capybara中的类div的多个元素,我希望能够遍历并引用第一行中的第一个文本。
但是,到目前为止,我尝试过的代码都没有起作用。以下是我尝试过的:
page.all(:css, 'div').each do |text|
expect(text).to_have 'Goku'[0]
end我试着在页面上循环一遍,看看能否在第一栏中找到小悟空的文本。
这是我的HTML标签
<div class="uiGridCellOverflow ng-binding ng-scope">Goku</div>预期输出:我期望第一行有文本‘悟空’。我的expect行应该检测到第一行有小悟空。
实际输出:目前出现错误
发布于 2022-04-19 00:41:39
首先,您没有class div的元素,而是div类型的元素。在讨论这些问题时,术语很重要,因为class在HTML中是不同的。第二,您提到了第一行和第一列,但是只显示了一个html元素,这使得很难准确地计算出您正在处理和试图实际做的事情。
当您使用each循环all的结果时,text引用的是单个div元素。因此,如果页面上的任何expect(text).to_have 'Goku'[0]中没有字母'G‘(不太确定您为什么在那里),它将引发异常。
你真的有
page.all(:css, 'div').each do |div_element|
expect(div_element).to_have('Goku'[0])
end它永远不会通过,因为页面上将有数百个(至少)不包含文本(或字母G)的div元素。
如果您真正想要找到的是其他元素的第一个子元素,并且包含文本小悟空,那么您可以这样做
page.all('* > div:first-child', exact_text: 'Goku')去找他们。如果这不是你想要做的,那么请更新这个问题,使它更清楚。
https://stackoverflow.com/questions/71916190
复制相似问题