使用Capybara进行测试时如何获取元素的id(Rails)

时间:2012-12-06 09:22:49

标签: ruby-on-rails capybara integration-testing

我正在使用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

3 个答案:

答案 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")')

希望这会对某人有所帮助:)。