如果您在视觉上查看网页并且页面上有可点击且唯一的内容,您只需点击它即可。不考虑页面结构。
我很想知道可以构建哪种最简洁的xpath来以多种方式模拟它。
例如,定位Google主页上的“我感觉很幸运”按钮:
//*[contains(@*, 'Lucky')]
以上作品。但是,如果包含Lucky作为内部文本,或者如果指定了错误的案例,则会失败。因此,我们的xpath需要满足任何灵敏度,并且还要查找匹配内部文本的给定字符串。
上面的xpath如何用最简洁但又包含在内的结构来表达?
答案 0 :(得分:0)
没有什么是非常通用的,并且执行这样的xpath有时也会成本高昂。
"//*[contains(@*, 'Lucky')] | //*[contains(text(), 'Lucky')]"
上面是一个xpath,你可以结合起来得到一些结果。您开始指定不要检查的节点或要检查的节点
"//*[contains(@*, 'Lucky')] | //*[contains(text(), 'Lucky')][not(self::script|self::td)]"
你可以继续改进
答案 1 :(得分:0)
无法创建通用XPath 来准确/可靠地按文本定位元素。
为什么?
但如果我必须创建一个,那么我将从这个开始:
"(html/body//*[not(self::script or self::style)][contains(concat(@value, normalize-space()), 'MyText')])[last()]"
获取<body>
的所有后代
html/body//*
除了<script>
和<style>
[not(self::script or self::style)]
value
属性或规范化html包含'MyText'
[contains(concat(@value, normalize-space()), 'MyText')]
然后返回最后和最深的匹配
[last()]