selenium查找svg元素

目录

如何为SVG元素编写XPath

使用local-name()的语法

需要记住的一点

将“and”与SVG元素一起使用

如何定位嵌套的SVG元素? 


XPath是一种用于定位XML文档中的web元素的语言,包括构成网页的HTML文档。在Selenium中,XPath是在网页上查找元素(包括SVG(可伸缩矢量图形)元素)最广泛使用的方法之一。

SVG元素不同于常规HTML元素,因为它们是使用XML而不是HTML创建的。在Selenium中查找它们需要与查找HTML元素不同的方法。本文将介绍使用XPath在Selenium中定位SVG元素的步骤。
我们将使用我们的硒游乐场网站来自动化SVG元素——https://testkru.com/Elements/SVGelemnts.

对于普通的HTML元素,我们可以直接使用标签来查找selenium中的元素。但是,如果我们尝试使用SVG元素,我们可能无法获得所需的结果,如下图所示。

SVG elements

 在这里,我们使用了一个简单的“//svg”Xpath,但它没有找到任何匹配项。
注意:如果我们使用类似于SVG元素的id之类的东西,它就会起作用。比如,如果我们使用了driver.findElement(By.id(“svgText”)),那么就可以找到相应的SVG元素。

如何为SVG元素编写XPath


如果没有id或唯一属性附加到SVG元素,该怎么办?那么我们将如何在Selenium中定位SVG元素呢?
我们可以使用local-name()函数来定位selenium中的SVG元素。

使用local-name()的语法

//*[local-name()='tag_name']

因此,为了找到SVG元素,我们可以使用“//*[local-name()='SVG']”XPath,它将定位所有的SVG元素。

SVG elements

注意:local-name()函数不仅限于“svg”标记。它可以与div、p等任何标签一起使用。

示例:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;public class CodekruTest {public static void main(String[] args) {// pass the path of the chromedriver location in the second argumentSystem.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");WebDriver driver = new ChromeDriver();driver.get("https://testkru.com/Elements/SVGelemnts");// finding the SVG elementsWebElement webElement = driver.findElement(By.xpath("//*[local-name()='svg']"));System.out.println(webElement.getText());}}

 输出:

SVG text ( Click on me! )

findElement()为参数中传递的XPath返回了第一个匹配元素,然后我们使用getText()方法打印文本。

需要记住的一点

需要注意的是,在为SVG元素编写XPath时,我们应该使用*(星号)。如果我们写了一些类似“//div[local-name()='svg']”的东西,那么它就不会起作用。

将“and”与SVG元素一起使用

正如我们在前面的例子中看到的,当我们使用“//*[local-name()='svg']”XPath时,它与6个svg元素匹配,但如果您想要一个特定的svg元素呢?
在这种情况下,我们可以将“and”与local-name()函数一起使用。

//*[local-name()='svg' and @attribute_name = 'attribute_value']

它将定位具有特定属性值的SVG元素。
因此,考虑到这一点,我们可以使用下面的XPath精确定位高度属性值等于180的SVG元素。

//*[local-name()='svg' and @height= '180']

highligting SVG element using and operator

如何定位嵌套的SVG元素? 

类似地,我们可以通过使用下面的XPath来定位嵌套的SVG元素。

//*[local-name()='svg']//*[local-name()='svg']

nested svg elements

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20969.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用VScode运行vue框架时,报无法运行的错误

报错内容 问题出在了版本上面,从reason可以了解到是由于不支持的原因 然后上面报错的几乎都属于node_modules包内的,因此我们可以判断,是node.js版本的问题导致的(尤其是你从网上拷贝比较旧的项目的时候,可能需要对依赖…

在VMware Workstation安装 ESXI8.0初体验

文章目录 🐟前言🐟安装🐟在VMware WorkStation中创建虚拟机🐟ESXI部署安装🐟安装完成后配置 🐟前言 ESXI8.0版本开始最低RAM从以前的4GB变为8GB 本文所使用到的镜像以及Key都可以到我的网站中下载 地址&…

PreparedStatement 相比于 Statement的优点

PreparedStatement 相比于 Statement,有以下几个优点: 1. 预编译:PreparedStatement 对象在执行 SQL 语句之前会进行预编译,这意味着数据库管理系统可以提前解析和编译 SQL 语句,以优化执行计划,从而提高查…

多条件见多值查询的 Excel 公式和 python 函数

问题 Python草堂 群的一位群友问:excel 数据表,用 vlookup 函数怎样实现多条件查询多值,多值排到一行上。如下图所示: 左边是数据清单,希望根据两个条件:产品、日期,查询数量,列到…

【C++】priority_queue使用与模拟实现

认识priority_queue 1、priority_queue(优先级队列)是一种容器适配器,底层是一个完全二叉树的大堆(堆总是一颗完全二叉树,根结点最大的堆叫做大堆;根结点最小的堆叫做小堆),头文件在queue中,根…

dSYM文件是什么 ?

Overview 概述 dSYM的全称是debug symbol, 所以dSYM文件就是debug symbol (dSYM) file, dSYM文件中的每个 debug symbol, 对应了一个关系, 这个关系一端是源代码里真实的符号(类名称、全局变量以及方法和函数名称), 另一端则是其定义的文件号和行号. Apple Documentation 苹果…

Java设计模式之结构型-享元模式(UML类图+案例分析)

目录 一、基本概念 二、UML类图 三、角色设计 四、案例分析 1、基本实现 2、游戏角色 五、总结 一、基本概念 享元模式是一种结构型设计模式,主要用于减少创建大量相似对象所占用的内存,它通过共享技术来有效支持大量细粒度的对象。 二、UML类图…

即视角|出海资本热土——印尼市场洞察(上)

即视角Insight 共享即构新洞察,共建行业新动能——ZEGO即构科技基于音视频技术领域的多年深耕,综合面向各行业的服务经验,在【即视角】栏目发布即构对行业的洞察。 此前我们根据即构对出海客户的服务经验,输出了文章《即视角&am…

【数据结构】二叉树的前中后序遍历(C语言)

文章目录 什么是二叉树树相关的概念树的表示形式特殊的二叉树如何创造出一棵二叉树二叉树的遍历先序遍历(前序遍历)中序遍历后序遍历 总结 什么是二叉树 [二叉树] 顾名思义就是有两个分支节点的树,不仅如此,除了叶子外的所有节点都具有两个分支节点&…

RiProV2主题一级分类显示包含子分类的数量Ritheme主题美化WordPress美化类似的步骤

美化-RiProV2主题一级分类显示包含子分类的数量 WordPress主题一级分类页面显示包含子分类的数量 一级分类显示子分类相加的数量 原主题配置项 原来的RiProV2主题,虽然有个配置用来显示分类下的数量。 但是该数量有个问题,就是一级分类的数量显示不包含该一级分类下二级…

使用React的函数式组件实现一个具有过渡变化、刻度切换、点击高亮的柱状图DIY组件

本想使用业界大佬们开源的各种图表库(如:ECharts、G2可视化引擎、BizCharts ...),但是有的需求不仅要求有过渡变化,还要点击某个图高亮同时发送HTTP请求数据等功能,着实不知道怎么把canvas或svg绘制的图表弄…

【OJ比赛日历】快周末了,不来一场比赛吗? #07.15-07.21 #7场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2023-07-15(周六) #3场比赛2023-07-16…