2016-08-02 33 views
2

我有以下HTML片段:如何获得使用XPath祖先ID标签上面的IMG标记轴

<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标签开始?

回答

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] 

一旦DIV使用上述的XPath标识,您可以然后遍历其子找到img标签。

(//div[@id="operations_edit_process_list_tab_groups_ct_groups_and_tasks_task_2"]/ancestor::div/preceding-sibling::div)[1]/img 

它会给你第一个图像标签。

但是我想说这是一种效率很低的方法,如果你只需要识别图像,以防你不需要带上述id的div

+0

这些为我工作。谢谢你的帮助。 –

1

您的HTML格式不正确。先解决这个问题。通过直接在谓词指定包含div

(xpath-that-selects-multiple-nodes)[1] 

另外请注意,您可避免使用ancestor轴:然后......

包裹的XPath在括号()并追加[1]选择的第一个节点祖先div

(/div[div/div/div/@id='operations_edit_process_list_tab_groups_ct_groups_and_tasks_task_2']//img)[1]