我尝试编写xpath表达式,以使我的测试不会因小的设计更改而中断。因此,我编写了自己的表达式,而不是Selenium IDE生成的表达式。
这是一个问题:
//input[@name='question'][7]
此表达式根本不起作用。名为“问题”的输入节点分布在整个页面上。他们不是兄弟姐妹。
我尝试使用中间表达式,但是也失败了。
(//input[@name='question'])[2] error = Error: Element (//input[@name='question'])[2] not found
这就是为什么我认为Seleniun具有错误的XPath实现。
根据XPath文档,位置谓词必须按 节点 集中的位置进行过滤,因此它必须找到input名称为的第七个'question'。在Selenium中,这不起作用。CSS选择器(:nth-of- kind)都没有。
input
'question'
:nth-of- kind
我必须写一个过滤他们共同父母的表达式:
//*[contains(@class, 'question_section')][7]//input[@name='question']
这是Selenium特有的问题,还是我读错了规格?如何做一个简短的表达?
这是一个问题: //input[@name='question'][7] 此表达式根本不起作用。
此表达式根本不起作用。
这是一个常见问题解答 。
[]具有比更高的优先级//。
[]
//
上面的表达式选择input带有的每个元素@name = 'question',这是其父元素的第7个子input元素- 显然,未显示的文档中元素的父元素没有太多input子元素。
@name = 'question'
使用 (注意方括号):
(//input[@name='question'])[7]
这将选择input满足谓词条件的文档中的第7个元素。
编辑 :
认识硒的人(戴夫·亨特)建议上述表达式用硒写成:
xpath=(//input[@name='question'])[7]