在 Xpath 搜索中转义冒号

发布于 2024-09-08 01:14:46 字数 424 浏览 7 评论 0原文

我将 Hpricot 与 selenium 一起使用,我有这个 html 输入元素:

<input id="foo:bar"/>

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

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

但由于冒号,它没有找到任何东西。我发现 Xpath 表达式不能包含任何冒号。我尝试过用不同的方式来逃避它,但没有成功。

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

有什么想法吗?

谢谢

I'm using Hpricot with selenium I have this html input element:

<input id="foo:bar"/>

And I'm trying to get this value with this Xpath expression:

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

but it is not finding anything because of the colon. I have seen that the Xpath expression cannot contain any colon. I have tried to escape it in different ways but it doesn't work.

Is there any way to escape it or avoid this problem? I cannot change the values in the html so the foo:bar has to be this way, with the colon. But I need to find this element somehow.

Any ideas?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谈情不如逗狗 2024-09-15 01:14:46

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

id=foo:bar

即使如此,id= 前缀也不是必需的,因为它将被默认假设。

You don't need to use XPath for this locator, as long as the id is unique you can simply use:

id=foo:bar

Even then, the id= prefix is not necessary as it will be assumed by default.

赠我空喜 2024-09-15 01:14:46

我遇到了同样的问题,这里提出的其他解决方案对我不起作用,因此使用 通过 ID 获取元素

基本上:

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

希望这有帮助。

I had the same issue, and the other solutions proposed here didn’t work for me, so used get_element_by_id.

So basically:

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

Hope this helps.

心头的小情儿 2024-09-15 01:14:46

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

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

You may be able to achieve this with a css locator, and specify that the id contains a particular string (the fact this is matching a string should remove any weirdness caused by the colon).
This locator worked for me when I tried it in Selenium IDE:

css=input[id:contains('foo:bar')]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文