2010-06-29 66 views
3

我使用的角度來說,Hpricot硒我有這樣的HTML input元素:在XPath搜索逃脫結腸

<input id="foo:bar"/> 

而且我想這個XPath表達式得到這個值:

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

但由於冒號而沒有找到任何東西。我看到Xpath表達式不能包含任何冒號。我試圖以不同的方式逃避它,但它不起作用。

有什麼辦法逃避它或避免這個問題?我無法更改html中的值,所以foo:bar必須以這種方式,冒號。但我需要以某種方式找到這個元素。

任何想法?

感謝

回答

1

您可以使用CSS定位來實現這一目標,並指定ID包含一個特定的字符串(這是匹配的字符串應該刪除造成結腸的任何古怪的事實)。 這個定位爲我工作,當我在硒IDE嘗試過:

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

我不熟悉hpricot,所以不能告訴你如何轉換成適當的語法,但它似乎支持CSS定位器。 – AlistairH 2010-06-29 15:10:02

+0

我在HPricot文檔中看到您可以使用XPath表達式或css定位器。我正在嘗試你的建議,但它沒有奏效,不知道是不是我的錯,雖然我是新的xpath和硒..我找到了解決方法,所以我可以得到獨特的元素與ID的第二部分+其他屬性。謝謝 – 2010-06-30 09:57:16

2

你不需要使用XPath此定位,只要id是獨一無二的,你可以簡單地使用:

id=foo:bar 

即使如此,id=前綴並不是必需的,因爲它將默認假定。

2

我有同樣的問題,並在這裏提出的其他解決方案不適合我,所以用get_element_by_id

所以基本上:

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

希望這有助於。