xml - 如何使用 XPath 祖先轴获取 ID 标签上方的 IMG 标签

标签 xml python-2.7 selenium xpath selenium-webdriver

我有以下 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 标签开始?

最佳答案

如果您只想使用 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),那么这是非常低效的方法。

关于xml - 如何使用 XPath 祖先轴获取 ID 标签上方的 IMG 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38723166/

相关文章:

python - 将列表(日期时间)的元素求和为一个值

python - 如何在Python中从xml字符串获取节点值

xml - 在无法接受集合的上下文中调用的 Postgresql 合并和集值函数

android - 角不适用于android drawable中的环形

Python 套接字 : Send/receive multiple message

java - 在 Collection View 中迭代 HashMap

c# - 没有使用 XPath 从 Atom XML 文档中选择节点?

python - 如何转义特殊字符以使用 LXML 编写 XML

java - 如何确保我的程序生成的所有 Selenium Webdriver 在程序终止时都是 quit() ?

c# - 如何在 C# selenium chrome 驱动程序中验证(用户/密码)代理