c#Selenium使用xpath的RC“OR”语句

时间:2013-02-21 09:25:15

标签: xpath selenium rc

我目前正在使用Selenium RC开发一些测试。我有关于使用xpath输入和textareas的selenium Xpath“OR”语句的问题。明白了。 我设计了2个xpaths

textarea://span[text()='{0}']/parent::*/following-sibling::*//textarea

输入://span[text()='{0}']/parent::*/following-sibling::*//input

通常我使用Selenium.Type(myXpath,“label = myValue”);这两个xpath都可以正常工作。 问题是当我试图合并它们时。如果它是一个输入或textarea,我并没有真正对我产生影响,因为两种方法都非常相似,因此我尝试将它们合并为| (或)陈述。

//span[text()='{0}']/parent::*/following-sibling::*//textarea|//input

但遗憾的是它不起作用。如果订单为//textarea|//input,则匹配textarea,如果//input|//textarea匹配输入。我正在尝试各种组合,但仍然没有。我缺少括号或一些必需的语法?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

获取所有节点(*),然后使用谓词测试所需节点的元素名称。

//span[text()='{0}']/parent::*/following-sibling::*//*[local-name() = 'textarea' or local-name() = 'input']

如果您的XPath引擎不支持local-name()(这似乎是Selenium的问题,请参阅注释),您将不得不重复完整的声明:

//span[text()='{0}']/parent::*/following-sibling::*//textarea | //span[text()='{0}']/parent::*/following-sibling::*//input

您尝试使用的查询等同于

(//span[text()='{0}']/parent::*/following-sibling::*//textarea) | (//input)

其中还解释了切换textareainput的结果。