使用ruby watir </p>从着陆页上的<p>中检索文本

时间:2013-10-01 10:47:05

标签: ruby watir

我必须从网页中检索文本并将其放在控制台上。 我无法从下面的HTML获取文本。任何人都可以帮助我。

<div class="twelve columns">
<h1>Your product</h1>
<p>21598: DECLINE: Decline - Property Type not acceptable under this contract</p>
<div class="row">
</div>

我在irb上尝试b.div(:class => 'twelve columns').exist?,并说true

我试过这个 - b.div(:class => 'twelve columns').text,它会在标题中返回不在段落中的文字。

我尝试了 - b.div(:class => 'twelve columns').p.text,它返回了我error - unable to locate element, using {:tag_name=>"p"}

2 个答案:

答案 0 :(得分:0)

简单地在你写的例子中这样做是为我工作的:

browser.div(:class => 'twelve columns').p.text

您最好的选择是检查您的页面css是否实际提供了元素结构,以及它们是否正确嵌套。

答案 1 :(得分:0)

我稍微修改了你的HTML:

<div class="twelve columns">
<h1>Your product</h1>
<p>21598: DECLINE: Decline - Property Type not acceptable under this contract</p>
<div class="row"></div>
</div>

让我们举一个小例子:

div = b.div(:class => 'twelve columns')

元素的枚举如下:

div.elements.each do |e|
  p e
end

会做那样的事情:

<Watir::HTMLElement ... # <h1>Your product</h1>
<Watir::HTMLElement ... # <p>21598: DECLINE: Decline - Property Type not acceptable under this contract</p>
<Watir::HTMLElement ... #<div class="row">

如果要从DIV指定子元素P,请执行以下操作:

p = div.p

p = div.element( :tag_name => 'p' )

获取P:

的文字
p.text # >> 21598: DECLINE: Decline - Property Type not acceptable under this contract

或者使用单个字符串执行事件:

b.div(:class => 'twelve columns').p.text

=> "21598: DECLINE: Decline - Property Type not acceptable under this contract"