我正在使用Capybara在我的应用程序中编写测试,但现在我有一种情况需要读取capybara中的元素id
myid = page.find("#parentNode").first(".childClass").id
考虑我有以下HTML结构
<div id="parentNode">
<div id="childNode1" class="childClass">1</div>
<div id="childNode2" class="childClass">2</div>
</div>
请注意:我不是要尝试读取子节点的内容,而是读取ID。以上所示是例如。
预期输出: childNode1(具有类childClass的第一个元素的ID
答案 0 :(得分:27)
你几乎接近答案。唯一的变化是调用id作为方法,你必须将其称为属性,如下所示
page.find("#parentNode").first(".childClass")[:id]
答案 1 :(得分:1)
在这种情况下,我会使用一些xpath而不是css。 注意我不是很熟练的xpathing所以我先用css来查找parentNode。
find(#parentNode).find(:xpath, div[1]).id
试一试,看看它是否有效。
也可以选择在第二个查找中使用css,并将该类用作条件,因为无论如何它都会找到第一个元素。
答案 2 :(得分:0)
得到答案.. !!
我们可以使用page.evaluate_script
来实现这一目标。我使用下面的代码
page.evaluate_script('$("#parentNode .childNode").first().attr("id")')
希望这会对某人有所帮助:)。