我正在使用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> <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以获取它。
答案 0 :(得分:1)
如果该段落是唯一的,您应该能够立即访问该段落:
my_p = browser.p(:class, "wpFieldValue ")
my_text = my_p.text
答案 1 :(得分: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是否为常数
答案 2 :(得分:0)
也许你在名字的末尾有一个额外的空间?
<p class="wpFieldValue ">
答案 3 :(得分: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"
答案 4 :(得分:0)
似乎在运行时THE 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
以上代码是解决问题的示例。