- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序必须计算用户单击的 HTML 元素的 XPath。在本例中,我尝试单击 Stackoverflow.com 上的“注册”按钮
这是单击的 HTML 元素的 DOM:
<html itemscope="" itemtype="http://schema.org/QAPage">
<body class="question-page new-topbar no-grid-comments no-grid-post-layout">
<header class="top-bar js-top-bar _fixed">
<div class="-container">
<div class="-actions">
<div class="-ctas">
<a href="https://stackoverflow.com/users/signup?ssrc=head&returnurl=%2fusers%2fstory%2fcurrent" class="login-link btn-topbar-primary" rel="nofollow" data-ga="["Sign Up","Sign Up Navigation","Header",null,null]">Sign Up</a>
如您所见,该 dom 中的最后一个元素是 <a>
标签,包含属性:
data-ga="["Sign Up","Sign Up Navigation","Header",null,null]
我的应用程序计算了 HTML 元素的 XPath:
/HTML/BODY[@class='questions-page new-topbar']/HEADER[@class='top-bar js-top-bar _fixed']/DIV[@class='-container']/DIV[@class='-actions']/DIV[@class='-ctas']/A[@href='https://stackoverflow.com/users/signup?ssrc=head&returnurl=%2fusers%2fstory%2fcurrent' and @class='login-link btn-topbar-primary' and @rel='nofollow' and @data-ga='['Sign Up','Sign Up Navigation','Header',null,null]']
当我测试 XPath 时,出现错误,找不到任何元素。我追踪错误并发现,如果我删除 and @data-ga='['Sign Up','Sign Up Navigation','Header',null,null]'
从我的 XPath 来看,一切正常,但我不能简单地删除属性,所以我的问题是:如何正确转义 XPath 中的嵌套方括号?
最佳答案
引起麻烦的不是方括号,而是引号。
您已经标记了问题 Java,这意味着您应该能够使用 XPath 2.0(例如通过 Saxon 或 Jaxen),这意味着您可以通过将字符串文字中的引号加倍来转义它们:
@data-ga='[''Sign Up'',''Sign Up Navigation'',''Header'',null,null]'
不幸的是,在一般情况下使用 XPath 1.0 很难实现这一点。
关于java - 如何在 XPath 中处理方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49423201/
我是一名优秀的程序员,十分优秀!