3

以下に示すように、テキストの完全一致を使用して探している要素を見つけることができますが、これを正規表現を使用して拡張しようとすると機能しません。私は何を間違っていますか?

>> browser.h3(:text => 'Latest News').exist?
=> true
>> browser.h3(:text, 'Latest News').exist?
=> true
>> browser.h3(:text, /Latest News/).exist?
=> false

>> p browser.h3(:text, 'Latest News')
#<Watir::Heading:0x..fcb7790992119c2b2 located=false selector={:text=>"Latest News", :tag_name=>"h3"}>
=> #<Watir::Heading:0x..fcb7790992119c2b2 located=false selector={:text=>"Latest News", :tag_name=>"h3"}>
>> p browser.h3(:text, /Latest News/)
#<Watir::Heading:0x54fac9ec99992782 located=false selector={:text=>/Latest News/, :tag_name=>"h3"}>
=> #<Watir::Heading:0x54fac9ec99992782 located=false selector={:text=>/Latest News/, :tag_name=>"h3"}>

aflサイトで、彼が求めていると思われる次のHTMLを見つけたコメントに基づいて編集します。これは、「最新ニュース」の大文字と小文字を区別しない検索のページ html で唯一一致するものです。

<div class="double-col column">
  <div class="segment   ">
    <h3 class="section-header    blocked">
        LATEST NEWS</h3>
    <div class="content">
      <div class="list-item focus">
        <div class="img-holder">
      .........                             
4

1 に答える 1

4

テスト サイトを指定すると、結果を再現できません。私の場合、'Latest News' を使用するすべてのロケーターが false を返します (つまり、文字列と正規表現の両方が一致します)。ページのテキストはすべて大文字で「LATEST NEWS」です。「Latest News」の代わりにこれを使用すると、文字列ロケーターと正規表現ロケーターの両方が true を返すことができました。

require 'watir'

browser = Watir::Browser.new :chrome
browser.goto 'afl.com.au'

puts browser.h3(:text => 'Latest News').exist?
#=> false
puts browser.h3(:text, 'Latest News').exist?
#=> false
puts browser.h3(:text, /Latest News/).exist?
#=> false

puts browser.h3(:text => 'LATEST NEWS').exist?
#=> true
puts browser.h3(:text, 'LATEST NEWS').exist?
#=> true
puts browser.h3(:text, /LATEST NEWS/).exist?
#=> true
于 2013-04-16T12:55:13.910 に答える