开发者

how to access this element

开发者 https://www.devze.com 2023-01-07 15:29 出处:网络
I am using Watir to write some tests for a web application. I need to get the text \'Bishop\' from the HTML below but can\'t figure out how to do it.

I am using Watir to write some tests for a web application. I need to get the text 'Bishop' from the HTML below but can't figure out how to do it.

<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 tells me the xpath is:

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()

but I cant format the element_by_xpath t开发者_运维问答o pick it up.


You should be able to access the paragraph right away if it's unique:

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

See HTML Elements Supported by Watir


Try

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

EDIT:

Maybe this will work

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

And check if the span's id is constant


Maybe you have an extra space in the end of the name?

<p class="wpFieldValue ">


Try one of these (worked for me, please notice trailing space after wpFieldValue in the first example):

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"


It seems in run time THE DIV style changing NONE to BLOCK.

So in this case we need to collect the text (Entire source or DIV Source) and will collect the value from the text

For Example :

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

The above code is the sample one will solve your problem.

0

精彩评论

暂无评论...
验证码 换一张
取 消