在Xpath搜索中转义冒号

时间:2010-06-29 14:46:25

标签: xpath selenium hpricot

我正在使用Hpricot和selenium我有这个html输入元素:

<input id="foo:bar"/>

我正在尝试使用此Xpath表达式获取此值:

source = Hpricot(@selenium.get_html_source)
source.search("//input[@id='foo:bar']")

但由于结肠没有找到任何东西。我已经看到Xpath表达式不能包含任何冒号。我试图以不同的方式逃避它,但它不起作用。

有没有办法逃避它或避免这个问题?我无法更改html中的值,因此foo:bar必须采用冒号方式。但我需要以某种方式找到这个元素。

有什么想法吗?

感谢

3 个答案:

答案 0 :(得分:2)

您不需要为此定位器使用XPath,只要id是唯一的,您只需使用:

id=foo:bar

即使这样,也不需要id=前缀,因为默认情况下会假设它。

答案 1 :(得分:2)

我有同样的问题,这里提出的其他解决方案对我不起作用,所以使用了get_element_by_id

基本上是这样的:

source = Hpricot(@selenium.get_html_source)
source.get_element_by_id("foo:bar")

希望这有帮助。

答案 2 :(得分:1)

您可以使用css定位器实现此目的,并指定id包含特定字符串(事实上,这匹配字符串应该删除由冒号引起的任何奇怪)。 当我在Selenium IDE中尝试它时,这个定位器对我有用:

css=input[id:contains('foo:bar')]