I try to write xpath expressions so that my tests won\'t be broken by small design changes. So instead of the expressions that Selenium IDE generates, I write my own.
<If you want the 7th input
with name
attribute with a value of question
in the source then try the following:
/descendant::input[@name='question'][7]
Here's an issue:
//input[@name='question'][7]
This expression doesn't work at all.
This is a FAQ.
[]
has a higher priority than //
.
The above expression selects every input
element with @name = 'question'
, which is the 7th child of its parent -- and aparently the parents of input
elements in the document that is not shown don't have so many input
children.
Use (note the brackets):
(//input[@name='question'])[7]
This selects the 7th element input
in the document that satisfies the conditions in the predicate.
Edit:
People, who know Selenium (Dave Hunt) suggest that the above expression is written in Selenium as:
xpath=(//input[@name='question'])[7]