4

私は次のものを持っています:

<ul class="a">
  <li class="b">
    <a class="c">
      <span class="d">
        <strong>text</strong>
      </span>
    </a>
  </li>
</ul>

スパンから「テキスト」を取得しようとしています。

私がしようとすると:

puts browser.ul( :class =>'a').li( :class =>'b').link(:class =>'c').span(:class =>'d')

span要素を取り戻します。#<Watir::Span:0x007fa1d11edb18>私がすべきように。

しかし、しようとすると:

puts browser.ul( :class =>'a').li( :class =>'b').link(:class =>'c').span(:class =>'d').text

次のようなエラーが表示されます:

unable to locate element, using {:class=>'b', :tag_name=>"li"}

何か案は ?

4

1 に答える 1

11

自分でページを作成し、ドロップボックスに入れて公開することを意味する場合でも、問題が再現可能なページを指摘していただけると助かります。

投稿した html と ruby​​ コードで問題を再現しようとしましたか? 提供されたコードでは問題が再現できないため、質問しています。自分で見てください:

> browser.ul( :class =>'a').li( :class =>'b').link(:class =>'c').span(:class =>'d')
 => #<Watir::Span:0x..fa66c75ff618434cc located=false selector={:class=>"d", :tag_name=>"span"}> 

> browser.ul( :class =>'a').li( :class =>'b').link(:class =>'c').span(:class =>'d').text
 => "text"

私が理解している限りでは、コードを提供すると Watir が要素を返すことに驚いていますが、その要素に対してメソッドを実行しようとすると、要素が見つからないと文句を言います。

ページ上の要素を表す ruby​​ オブジェクトを詳しく見てみましょう。

#<Watir::Span:0x..fa66c75ff618434cc located=false selector={:class=>"d", :tag_name=>"span"}>

注意してくださいlocated=false。私の知る限り、これは watir がアクセスを試みる前に ruby​​ オブジェクトを作成することを意味するため、コードの最初の行で例外は発生しません。しかし、要素を使用しようとすると、watir はページ上でそれを見つけることができず、文句を言います。

于 2013-03-21T12:35:07.587 に答える