我有以下HTML代码段:
<div class="GFNQNVHJF GFNQNVHBG" style="left: 0px;width: 15px;height: 15px;position:absolute;">
<img border="0" style="width:15px;height:15px;background:url(data:image/png;base64,iVBORw0KGgoAAAAN5/ncys6TuRVdp/Iqu06B2HlVnYeBclfyKjobcGoGSk4HKvoPwnmVINwFwRD+H6B4NE7N+RXtpkBFdyGau6AGdII151d0bqmvr2fD63SgE6eCNSMbUNH5Ob+qO4agvwvKOjWBGu6DNCEM6dxFdMABbZ+dVwHX/CGnoiuUaM35ZZ3q+ZVdL0HOBhpwhORoA9o4E4i/5pV3+JOsObu6Rx7o1+UMww8AANkFdufA16fyAAAAAElFTkSuQmCC) no-repeat 0px 0px;" src="http://test1:8080/clearcore/ClearCore/clear.cache.gif" onload="this.__gwtLastUnhandledEvent="load";"/>
</div>
<div class="GFNQNVHLF GFNQNVHNF">
<div style="padding-left: 22px;position:relative;zoom:1;">
<div style="left:0px;margin-top:-8px;position:absolute;top:50%;line-height:0px;">
<img border="0" style="width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGg8/9hAAACwElEQVR42o2SW0hTARjH53FLBSddpKim+FBCULolvvQiaVOHBiIussg3MxFcNJZDi+OmsIaM+aB2wSlraTq6eZvDC2MT7zuTOdwUw6nLNUUKE6Ee9Os7h4OQqPTBD87l+393DucYa2wcv6LVDumKi3U3amq+eOTy9wb8HIvwOP9jGs1wvdcbArN5BkZGVkCj6dpOTy9rEolup+HvSCTsSLFaPXhHo7H4KSoIdvsi9PfPg8OxDH19PhCL5TZ0uYpE/SMiSZIgSVs0Hbm0tMXo92/DwsImqNWfdySSR10DA8vQ1DQMcXHX6Vbus+3sW5jR6J1taLD5c3LKb1ZWmleLihrA7Q7B6OgKZvYDRa1DR4cLRCLpMPoXMQFI0nxCrx97pVJZX7S1OXfm5kLQ2joOPt8GKBTt2L8TxYvgcoVAp+sHmcwIiYniXhQ/RM5xlMrOW3b7V1hd/QnT00EUbmLZP2Bq6hsYDCOMKDu7akcub92TSJQbPF5kO0Fw9SguQM5wpFIyXiYzBT2edQgEtqC6umNPrf74x+FYYoJ0d89Bfv7zJT7/vJHPF7xGUTWSjlxk1qlSffrtcgWYXnt6ZiAhIbUzPJz31mCY+OV0roFeb4WUlEIHQRB01rtIKnIKIZjJVVS0r5vNFNDObncQ6uosm/X1Q7ODg8t7k5MBsNkCUFvbBbGxl7XoLkSi98W0paWViHNzn3noXdNBKGoNZxFgyrdY5iEvr3Y7K0vh43Ij6tjsEQdvhq9QvNuyWHzQ3DwBY2PfcepeMJlcYLUuQXJyAX00RuQxcgnhHgxAiMUVTzMzlbMCgdCk1fZCScnLXYEg9UNZWcuuUFhoR58qtvyoo873NJLN40WVZ2Q8WUlKklrx/U1MjIDEldFTv8fs/Jjbp8s6ya4mmT2SB+zzNST+sN4PszC2zAvIWVZ0Agk/SvAXQoBdSmSZLrAAAAAASUVORK5CYII=) no-repeat 0px 0px;" src="http://test1:8080/clearcore/ClearCore/clear.cache.gif" onload="this.__gwtLastUnhandledEvent="load";"/>
</div>
<div>
<div id="operations_edit_process_list_tab_groups_ct_groups_and_tasks_task_2">
<span>
<span class=" myinlineblock" title="Matches" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;width:100%;">Matches</span>
</span>
有2个IMG标签,然后是ID标签。我正在尝试找到第一个IMG标签。我想从使用XPATH的ID标签开始。
我的XPath正在找到两个IMG标签。我只想要第一个IMG标签。 我的XPath是:
//div[@id="operations_edit_process_list_tab_groups_ct_groups_and_tasks_task_2"]/ancestor::div[4]//img
如何使用祖先找到第一个IMG标记,因为我想从ID标记开始?
答案 0 :(得分:1)
您的HTML格式不正确。先解决这个问题。然后...
将XPath包装在parens ()
中,并附加[1]
以选择第一个节点:
(xpath-that-selects-multiple-nodes)[1]
另请注意,您可以通过在祖先ancestor
的谓词中直接指定包含的div
来避免使用div
轴:
(/div[div/div/div/@id='operations_edit_process_list_tab_groups_ct_groups_and_tasks_task_2']//img)[1]
答案 1 :(得分:1)
如果您只想使用ancestor
识别相同内容,那么在这种情况下您可以继续使用以下选项: -
首先,您必须识别具有第一个图片标记的div,div
不是div
的祖先id = operations_edit_process_list_tab_groups_ct_groups_and_tasks_task_2
。这是特定div的sibling
。
所以你需要先使用以下方法识别兄弟姐妹: -
(//div[@id="operations_edit_process_list_tab_groups_ct_groups_and_tasks_task_2"]/ancestor::div/preceding-sibling::div)[1]
使用上面的xpath识别div后,您可以遍历其子项以查找img
标记。
(//div[@id="operations_edit_process_list_tab_groups_ct_groups_and_tasks_task_2"]/ancestor::div/preceding-sibling::div)[1]/img
它会为您提供第一个图像标记。
但我想说的是,如果您只需要识别图像,以防您不需要具有上述ID的div
,这是非常低效的方法。