3

我正在使用带硒的 Hpricot 我有这个 html 输入元素:

<input id="foo:bar"/>

我试图用这个 Xpath 表达式来获得这个值:

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

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

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

有任何想法吗?

谢谢

4

3 回答 3

2

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

所以基本上:

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

希望这可以帮助。

于 2012-10-26T08:55:43.943 回答
2

您不需要为此定位器使用 XPath,只要它id是唯一的,您就可以简单地使用:

id=foo:bar

即使这样,id=前缀也不是必需的,因为默认情况下会假定它。

于 2010-06-29T15:16:42.517 回答
1

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

css=input[id:contains('foo:bar')]
于 2010-06-29T15:03:28.127 回答