Rock
Rock

Reputation: 131

XPath for a span based on its text?

I am unable to locate first span with XPath I tried:

//*[@id='student-grid']/div[2]/div[1]/table/tbody/tr[1]/td/span/span[contains(text(), 'Edit School')]

to select span with text - Edit Student button

<tbody role="rowgroup">
<tr class="" data-uid="2f3646c6-213a-4e91-99f9-0fbaa5f7755d" role="row" aria-selected="false">
<td class="select-row" role="gridcell">
<td class="font-md" role="gridcell">marker, Lion</td>
<td role="gridcell">TESTLINK_1_ArchScenario</td>
<td role="gridcell">1st</td>
<td role="gridcell">Not Started</td>
<td role="gridcell"/>
<td role="gridcell"/>
<td role="gridcell">QA Automation TestLink Folders</td>
<td class="k-cell-action" role="gridcell"/>
<td class="k-cell-action detail-view-link font-md" role="gridcell">
<span class="button-grid-action kendo-lexia-tooltip icon-pencil" role="button" title="Edit Student">
<span>Edit Student</span>
</span>
</td>
<td class="k-cell-action archive-link font-md" role="gridcell">
<span class="button-grid-action kendo-lexia-tooltip icon-archive" role="button" title="Archive Student">
<span>Archive Student</span>
</span>
</td>
</tr>
</tbody>

Upvotes: 10

Views: 67918

Answers (4)

kjhughes
kjhughes

Reputation: 111521

To select the outer span, this XPath,

//span[@role='button' and normalize-space()='Edit School']

will select span elements with a button @role and a normalized string value of Edit School.

To select the inner span, this XPath,

//span[text()='Edit School']

will select span elements with an immediate text node child whose value is Edit School.

You can, of course, further qualify the heritage in either case as needed.

See also

Upvotes: 4

iamsankalp89
iamsankalp89

Reputation: 4739

simply use can use any of this xpaths

//span[contains(text(),'Edit Student')]
//*[contains(text(),'Edit Student')]
//span [@class='button-grid-action kendo-lexia-tooltip icon-pencil']/span
//span [@title='Edit Student']/span
//span [contains(@title,'Edit Student')]/span
//span [contains(@class,'button-grid-action kendo-lexia-tooltip icon-pencil')]/span

Upvotes: 7

Zach
Zach

Reputation: 1006

This should get the span text

//span[.='Edit Student']

Upvotes: 2

Vitaliy Moskalyuk
Vitaliy Moskalyuk

Reputation: 2583

If you want to select span with text - Edit Studen try any of this:

//span[@title='Edit Student']/span
//span[text()='Edit Student']

If you want to select Edit Studen with role="button" try any of this:

//span[@title='Edit Student'][@role='button']
//span[@role='button'][./span[text()='Edit Student']]
//span[@role='button'][./span[.='Edit Student']]

Upvotes: 10

Related Questions