ryanthescot
ryanthescot

Reputation: 337

how to access this element

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 to pick it up.

Upvotes: 1

Views: 407

Answers (5)

katmoon
katmoon

Reputation: 1024

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

Upvotes: 1

Jazzezravi
Jazzezravi

Reputation: 21

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.

Upvotes: 0

Željko Filipin
Željko Filipin

Reputation: 57262

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"

Upvotes: 0

katmoon
katmoon

Reputation: 1024

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

<p class="wpFieldValue ">

Upvotes: 0

pablochan
pablochan

Reputation: 5715

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

Upvotes: 0

Related Questions