1

私のRFTコードは

table_cell = find(atList(
                atDescendant(".class" , "Html.TD")
                ,atChild(".text" , "normal")
            ),false
        );

すると、2 つのオブジェクトが見つかります。テキスト「通常」を取得した直接の子を持つTDが必要であると指定したため、1つだけを期待していました。スクリーンショットを参照してください。

次に、見つかった両方の結果で .getMappableParent() メソッドを使用すると、2 つのテーブルが得られます (テーブルの後にいます) 画像を参照してください。

なぜ私が2つのオブジェクトを手に入れたのか誰か説明できますか?

ここに画像の説明を入力

atChild と RFT find() メソッドに関する情報

atChild -- 開始テスト オブジェクトの直接の子に対して一致する必要がある 1 つ以上のプロパティ

4

1 に答える 1

2

100% 確信があるわけではありませんが、RFT では ".text" を要素の XML スタイル プロパティとして使用していると思います。 http://www.w3schools.com/dom/prop_element_text.asp

atList() を見つけています。これは、前のルールの結果を入力として使用して、検索ルールが次々に適用されることを意味します。

1- RootTestObject の子であるすべての TD を検索します

2- それらの TD で、テキストの子として「通常」を持つすべての TD を検索します

ただし、「.text」はすべての子ノードに含まれるすべてのテキストを返すため、このプロパティに一致する 2 つの TD が見つかります。それでも、テキストの一致がどのように機能するかはわかりません。完全一致ではなく、一種の正規表現の方法または含むと思います。

外部テーブルから検索を開始してみることができます

table_cell = table_outer().find(atList( atDescendant(".class" , "Html.TD") ,atChild(".text" , "normal") ),false );

または、検索で正しい結果にアクセスすることによって

real_table_cell = table_cell[1];

お役に立てれば。

于 2012-07-03T08:31:32.213 に答える