17

我正在使用 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(第一个元素的id,class为childClass

4

3 回答 3

31

你几乎接近答案了。唯一的变化是不要将 id 作为方法调用,您必须将其作为属性调用,如下所示

page.find("#parentNode").first(".childClass")[:id]
于 2012-12-06T11:28:42.113 回答
1

在这种情况下,我会使用一些 xpath 而不是 css。注意我对 xpathing 不是很熟练,所以我首先使用 css 来查找 parentNode。

find(#parentNode).find(:xpath, div[1]).id

试试看它是否有效。

可选地,您也可以在第二个查找中使用 css 并将类用作标准,因为它无论如何都会找到第一个元素。

于 2012-12-06T09:34:37.193 回答
1

得到答案..!!

我们可以使用page.evaluate_script来实现这一点。我使用了下面的代码

page.evaluate_script('$("#parentNode .childNode").first().attr("id")')

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

于 2012-12-06T10:18:52.427 回答