4

私はhtmlのようなものを持っています

<div class="header"><div class="title">AAAAAAAAA</div></div>
<div class="body">
  <div class="card"><div class="xxx"><div class="yyy"><div class="title">AAAAAAAAA</div></div></div></div>
  <div class="card"><div class="xxx"><div class="yyy"><div class="zzz"><div class="title">BBBBBBBBB</div></div></div></div></div>
</div>

(watir-webdriverを介して)言うために必要なことは、「クラスが「カード」の要素の子である「タイトル」のクラスとテキストが「AAAAAAAAA」の要素を取得する」ということです。この例では、3 行目にクラス 'title' を持つ div を見つけたいと考えています。

「テキスト 'AAAAAAAAA' と 'title' のクラスを持つ要素を教えてください」と言うだけでは十分ではありません。なぜなら、その要素は DOM のどこかに存在する可能性があるからです。属性と親によって識別できなければなりません。

これを行う方法がわからないので、いくつかの提案が本当に大好きです。

watir-webdriver で、次のように記述します。

b.element(:class => "card").element(:class => "title", :text => "BBBBBBBBB")

次に、私が見たところ、 element(:class => "card") は3行目の最初のカード要素と一致し、次に BBB... テキストの一致が失敗するため、何も見つかりません。 AAA のみ... 最初のカードで利用できます。

私は次のようなことをすることを考えました

b.elements(:class => "card").each { |elem| ...etc }

子要素を探したいのですが、子要素を見つけたらなかなか使えません。たとえば、visible を呼び出せるようにしたいですか? その上で、しかし結果はそのコードブロックから抜け出すのが難しい. 可視を割り当てるローカル変数を使用できますか? または、ブロック内からエラーをスローすることもできますが、実際には私が求めているものではありません。

私が本当に求めているのは:

b.elements(:class => "card").element(:class => "title", :text => "BBBBBBBBB").othermethods...

したがって、最初のメソッド呼び出しはカードのクラスを持つすべての要素を見つけ、次に 2 番目のメソッドで、クラス「タイトル」とテキスト「BBBBBBBB」を持つカードの下の最初の要素を見つけます。カードの下には、クラス「タイトル」とテキスト「BBBBBBBB」を持つ要素が 1 つだけあることがわかっています。

ただし、この機能は存在しません。同じことを達成する簡単な方法はありますか?ここで少しご指導いただければ幸いです。前もって感謝します。

4

1 に答える 1