0

DOM の詳細は次のとおりです。

<div id: "abc_440"
 <table class = "listtable"   >
   <tbody>
     <tr>
       <td id = "someid"   >
       <td class = 'someclass_item"> This is Text </td>
       <td class = 'someclass_button">
          < a > Add </a>
       </td>    
     </tr>
   </tbody>
 </table>
</div> 

「This is Text」で特定のテキストの「追加」をクリックする必要があります。ID (abc_440) の div を使用して対応するテーブルを見つける必要があります。この同じ dom レイアウトの div が存在する可能性があるためです。ただし、div ID (たとえば 440) のインデックスは乱数に変化し続けます。一般的にはどのように処理しますか?

助けてください。

4

2 に答える 2

1

あなたがやりたいことは、以前の Watir の質問と非常によく似ていると思います。

ID がランダムに生成されることを考えると、リンクを見つける良い方法とは思えません。おそらく、同じ行のテキストを使用する必要があります。

「これはテキストです」が一意であると仮定すると(そのための追加リンクを見つけたいと言ったように)、そのtdを見つけて親行に移動し、リンクを取得できます。

b.td(:text => 'This is Text').parent.link.click

テキストが 2 列目にあることを確認する必要がある場合は、次のようにします。

b.trs.find{ |tr| 
    tr.td.exists? and tr.td(:index => 1).text == 'This is Text'
}.link.click

一部のtr.td.exists?行に tds がない場合 (ヘッダー行など) に追加され、2 番目の基準をチェックするときに例外が発生します。

于 2013-10-22T00:41:07.193 に答える
1

HTML タグに引用符を混在させないでください。 id:動作しません。 <td>s が空であることはめったにありません。<a>nchor[追加] ボタンは、要素ではなくボタンである必要があります。ボタンは<form>s でのみ機能します。

<form id="abc_440" action='someURI'>  <!-- The handler for the button. -->
    <table class="listtable">
        <tbody>
            <tr>
                <td id = "someid">
                    <!-- What goes here? -->
                </td>
                <td class='someclass_item'>
                    This is Text
                </td>
                <td class='someclass_button'>
                    <button name='add'>Add</button>
                </td>    
            </tr>
        </tbody>
    </table>
</form> 

nameボタンの属性addとフォームのid属性 abc_440からボタンを見つけることができるはずです。idsを生成するのは誰ですか?

追加ボタンの問題が解決し、フォームの ID がどこから来ているかを突き止めたら、書式設定にテーブルを使用するのをやめてください。その必要はありません。<form>s、<fieldset>s、<legend>s、およびsについて学習し<label>ます。*some_id* 部分が必要だとは思えません。テキスト部分はおそらく aである必要があり、CSS を使用してs を次のよう<label>にフォーマットできます。<label>

label {
    width: 150px;
    float: left;
}
fieldset p {
    clear: left;
}
于 2013-10-21T23:40:37.520 に答える