17

アプリケーションでテストを記述するためにカピバラを使用していますが、カピバラ内の要素の 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

4

3 に答える 3

31

あなたはほとんど答えに近づいています。唯一の変更点は、id をメソッドとして呼び出す代わりに、次のように属性として呼び出す必要があることです。

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

答えが出ました..!!

これを達成するために使用できますpage.evaluate_script。以下のコードを使用しました

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

これが誰かを助けることを願っています:)

于 2012-12-06T10:18:52.427 に答える
1

この場合、css の代わりに xpath を使用します。私は xpathing にそれほど熟練していないので、最初に css を使用してparentNode を見つけます。

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

それを試して、それが機能するかどうかを確認してください。

オプションで、2 番目の検索でも css を使用し、最初の要素を検索するため、クラスを条件として使用できます。

于 2012-12-06T09:34:37.193 に答える