【问题标题】:How to get id of an element when using Capybara for test (Rails)使用 Capybara 进行测试时如何获取元素的 id (Rails)
【发布时间】:2012-12-06 09:22:49
【问题描述】:

我正在使用 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,类为childClass

【问题讨论】:

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


    【解决方案1】:

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

    page.find("#parentNode").first(".childClass")[:id]
    

    【讨论】:

    • 好答案。只是想补充一点,如果你想将 id 存储在一个变量中,你应该这样做myid = "#" + page.find("#parentNode").first(".childClass")[:id]
    【解决方案2】:

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

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

    试试看它是否有效。

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

    【讨论】:

      【解决方案3】:

      得到答案..!!

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-18
        • 2014-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多