【Selenium】XPath表达式无法定位svg标签中的path标签

文章讲述了如何在HTML页面中的SVG元素上使用Selenium进行点击操作,原XPath表达式无效,通过先匹配svg上一级div,再利用通配符匹配svg内部所有标签并指定序号,解决了对SVG路径元素的精确选择问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、描述

最近在某个网站上遇到一个svg元素,需要执行点击操作,HTML元素如下:

<div class="db-con-link">
    <img class="back-img" src="https://zsbs.zs.gov.cn/skin/szrhzq/images/left_back.png" alt="">
    <div class="title">政策导航</div>
    <div class="mask">
        <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="588px" height="184px">
            <path class="leftBox l-left z_zcdh" fill-rule="evenodd" fill="rgb(0, 0, 0)" d="M10.500,0.535 L313.000,0.535 L275.500,183.115 L10.500,183.115 C4.977,183.115 0.500,178.636 0.500,173.111 L0.500,10.540 C0.500,5.014 4.977,0.535 10.500,0.535 Z"></path>
            <path class="rightBox l-left s_zcdh" fill-rule="evenodd" fill="rgb(255, 255, 255)" d="M578.000,183.115 L275.500,183.115 L313.000,0.535 L578.000,0.535 C583.523,0.535 588.000,5.014 588.000,10.540 L588.000,173.111 C588.000,178.636 583.523,183.115 578.000,183.115 Z"></path>
        </svg>
    </div>
</div>

我需要点击svg里面的path标签,但在Selenium中通过XPath表达式:“//div[@class="db-con-link"]//svg/path”无法匹配。

二、解决

  1. 修改XPath表达式,先匹配svg标签的上一层:“//div[@class="db-con-link"]//div[@class="mask"]”;
  2. svg标签包括里面的标签全部用通配符*匹配:“//div[@class="db-con-link"]//div[@class="mask"]/*/*”;
  3. 因为svg标签里面有两个子节点path,因此加上序号即可匹配指定的path标签:“//div[@class="db-con-link"]//div[@class="mask"]/*/*[1]”;
  4. 最终匹配svg标签里面的元素XPath表达式为:“//div[@class="db-con-link"]//div[@class="mask"]/*/*[1]”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值