2013-04-16 28 views
3

如下图所示,我能够使用文本上的精确匹配找到我正在查找的元素,但是当我尝试将此扩展为使用正则表达式时,工作。我究竟做错了什么?在ruby/watir webdriver中使用正则表达式的语法

>> 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"}> 

编辑根据意见,发现下面的HTML,这似乎是他的什么之后,在AFL网站。这是在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"> 
     .........        
+0

你能不能给我们使用了'正则表达式'的完整句子吗? –

+0

你能做'p browser.h3(:text,'Latest News')'和'browser.h3(:text,/ Latest News /)吗?向我们展示结果 –

+1

请提供相关的HTML,或更好的链接到相关页面。 –

回答

4

我无法重现你的结果给出的测试网站。对我来说,所有的定位器的使用‘最新消息’回归假(即两个字符串和正则表达式匹配)的页面文字全部大写,“最新消息”,使用的不是“最新消息”允许了字符串和正则表达式定位器返回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 
+0

奇怪。我更新了我的红宝石版本和宝石,现在这个不正常的行为神奇地消失了,我的结果和你一样。 – wim

+0

注:使用正则表达式有时可能会有点慢,所以通常最好避免它,除非需要它 –