从watir webdriver中的span元素中检索文本

时间:2013-03-21 06:42:47

标签: watir watir-webdriver

我有以下内容:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:9)

如果您可以指向问题可重现的页面,这将有所帮助,即使这意味着您自己创建页面,将其放在Dropbox中并公开。

您是否尝试使用已发布的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无法在页面上找到并抱怨。