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>

我试b.div(:class => 'twelve columns').exist?了irb,它说true

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

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

4

2 回答 2

0

只需在您为我编写的示例中执行此操作:

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

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

于 2013-10-01T12:19:37.163 回答
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" 
于 2013-10-01T13:39:04.150 回答