当前位置: 首页 > 知识库问答 >
问题:

如何使用XPath祖先轴在ID标记上方获取IMG标记

诸葛令
2023-03-14

我有以下超文本标记语言片段:

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

共有2个答案

仉明知
2023-03-14

您的HTML格式不正确。首先修复此问题。然后

将XPath包装在括号()中并附加[1]以选择第一个节点:

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

还请注意,通过直接在祖先div的谓词中指定包含的div,可以避免使用祖先轴:

(/div[div/div/div/@id='operations_edit_process_list_tab_groups_ct_groups_and_tasks_task_2']//img)[1]
孙承弼
2023-03-14

如果您想使用祖先来识别相同的对象,那么在这种情况下,您可以继续使用以下选项:-

首先,您必须识别具有第一个图像标记的div,该div不是id=operations\u edit\u process\u list\u tab\u groups\u ct\u groups\u and\u tasks\u task\u 2的div的祖先。它是该特定div的兄弟。

因此,您需要首先使用以下方法识别兄弟姐妹:-

(//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的情况下识别图像,那么这是一种非常低效的方法。

 类似资料:
  • 我有以下html片段: 我已经用以下XPath找到了该元素: 谢谢,里亚斯

  • 我有来自网站的代码,我想在那里找到并获得图像的路径,我的意思是来自

  • 我有一个带有div标记的html,它有一个id属性。我想在Xpath中使用start with获取id属性的值。 以下是一个HTML片段: 使用Xpath以我想将id值放入变量中开始,以便稍后在我的代码中使用它。 最后的数字3是动态的,如果我可以使用start with,那么我可以得到id值。 我尝试了以下Xpath,它不起作用: 正确的语法是什么?谢谢Riaz

  • 我做了一个画廊,包含一些不同的图像和点击他们打开模态,并显示图像的缩放。 我使用相同的方法与投资组合,但在这里我只有4项,所以我创建4种不同的模态,显示描述等... 现在有了图像,我想要一个单一的模式,改变图像显示与用户点击。 包含图像的div是这样结构的: 这里是模态: 这里是jQuery: 以下链接 问题是,当我点击图片时,网站显示模式,但不显示里面的图片。。。使用inspect代码,我看到s

  • 我在div标签中有一个段落和一个按钮。我想在div标记上使用onlick=“”方法,而不是在div标记内的按钮上。我怎么能这么做。

  • 我试图使用python/lxml和命令提取图像URl,但在隔离url本身时遇到麻烦。 下面是我想要的围绕img的HTML: 具体来说,我想隔离<代码>https://photos.zillowstatic.com/p_h/IS2fordnekys6d1000000000.jpgurl。 我尝试了几种方法,但都没有成功,包括以下几种方法: