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