избежать двоеточия в поиске Xpath - PullRequest
3 голосов
/ 29 июня 2010

Я использую Hpricot с селеном. У меня есть этот HTML-элемент ввода:

<input id="foo:bar"/>

И я пытаюсь получить это значение с помощью выражения Xpath:

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

это не находит ничего из-за толстой кишки.Я видел, что выражение Xpath не может содержать двоеточие.Я пытался избежать этого по-разному, но он не работает.

Есть ли способ избежать этого или избежать этой проблемы?Я не могу изменить значения в html, поэтому foo: bar должен быть таким, с двоеточием.Но мне нужно как-то найти этот элемент.

Есть идеи?

спасибо

Ответы [ 3 ]

2 голосов
/ 29 июня 2010

Вам не нужно использовать XPath для этого локатора, если id уникален, вы можете просто использовать:

id=foo:bar

Даже в этом случае префикс id= не требуется, так как он будет принят по умолчанию.

2 голосов
/ 26 октября 2012

У меня была та же проблема, и другие решения, предложенные здесь, не работали для меня, поэтому использовали get_element_by_id .

Так что в основном:

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

Надеюсь, это поможет.

1 голос
/ 29 июня 2010

Вы можете достичь этого с помощью локатора css и указать, что идентификатор содержит конкретную строку (тот факт, что это соответствует строке, должен удалить все странности, вызванные двоеточием). Этот локатор работал для меня, когда я попробовал его в Selenium IDE:

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