1

我正在使用 Watir 为 Web 应用程序编写一些测试。我需要从下面的 HTML 中获取文本“Bishop”,但不知道该怎么做。

<div id="dnn_ctr353_Main_ctl00_ctl00_ctl00_ctl07_Field_048b9dfa-bc64-42e4-8bd5-b45385e5f45b_view" style="display: block;">
   <div class="workprolabel wpFieldLabel">
    <span title="Please select a courtesy title from the list.">Title</span>&nbsp;<span class="validationIndicator wpValidationText"></span>
   </div>
   <span class="wpFieldViewContent" id="dnn_ctr353_Main_ctl00_ctl00_ctl00_ctl07_Field_048b9dfa-bc64-42e4-8bd5-b45385e5f45b_view_value"><p class="wpFieldValue ">Bishop</p></span>
  </div>

Firebug 告诉我 xpath 是:

html/body/form/div[5]/div[6]/div[2]/div[2]/div/div/span/span/div[2]/div[4]/div[1]/span[1]/div[2]/span/p/text()

但我无法格式化 element_by_xpath 来获取它。

4

5 回答 5

1

如果它是唯一的,您应该能够立即访问该段落:

my_p = browser.p(:class, "wpFieldValue ")
my_text = my_p.text

查看Watir 支持的 HTML 元素

于 2010-07-15T10:38:27.850 回答
0

尝试

//span[@id='dnn_ctr353_Main_ctl00_ctl00_ctl00_ctl07_Field_048b9dfa-bc64-42e4-8bd5b45385e5f45b_view_value']//text()

编辑:

也许这会奏效

path = "//span[@id='dnn_ctr353_Main_ctl00_ctl00_ctl00_ctl07_Field_048b9dfa-bc64-42e4-8bd5b45385e5f45b_view_value']/p";
ie.element_by_xpath(path).text

并检查 span 的 id 是否为常数

于 2010-07-15T10:17:16.523 回答
0

尝试其中一个(对我有用,请注意wpFieldValue第一个示例中的尾随空格):

browser.p(:class => "wpFieldValue ").text
#=> "Bishop"

browser.span(:id => "dnn_ctr353_Main_ctl00_ctl00_ctl00_ctl07_Field_048b9dfa-bc64-42e4-8bd5-b45385e5f45b_view_value").text
#=> "Bishop"
于 2010-07-15T12:55:30.683 回答
0

也许您在名称末尾有一个额外的空格?

<p class="wpFieldValue ">
于 2010-07-15T11:39:27.173 回答
0

似乎在运行时 DIV 样式将 NONE 更改为 BLOCK。

所以在这种情况下,我们需要收集文本(整个源或 DIV 源)并将从文本中收集值

例如 :

text=ie.text

particular_div=text.scan(%r{div id="dnn_ctr353_Main_ctl00_ctl00_ctl00_ctl07_Field_048b9dfa-bc64-42e4-8bd5-b45385e5f45b_view" style="display: block;(.*)</span></div>}im).flatten.to_s

particular_div.scan(%r{ <p class="wpFieldValue ">(.*)</p> }im).flatten.to_s

上面的代码是一个可以解决您的问题的示例。

于 2010-07-16T06:54:12.957 回答