selenium查找svg元素

news2024/11/23 12:03:56

目录

如何为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 argument
        System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
 
        driver.get("https://testkru.com/Elements/SVGelemnts");
 
        // finding the SVG elements
        WebElement 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.coloradmin.cn/o/749728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

001 Jetpack Compose入门

目录 1.前提准备 2.新建项目 1.前提准备 下载最新版本的AndroidStudio,我目前的版本如下: 注意要将kotlin环境配置好 2.新建项目 新建项目中空Activity就是新建的Compose项目 然后就会得到一个Compose界面的应用 为何要学Compose可以看郭霖的文章&…

拉丁语翻译软件分享-收藏这几个备用

在当今全球化的时代,语言交流变得更加重要。虽然英语已经成为国际通用语言,但依旧有一些古老的语言在特定领域和文化中仍然得到广泛使用。其中,拉丁语作为古代罗马帝国的官方语言,对欧洲语言起了重要的影响。在本文中,…

el-select组件如何在页面一加载时就根据数据选中el-option中的数据

页面一加载就要选中下拉中的数据,要和下拉数组中的value的类型一致,value是number,select的v-model就不能是字符串,必须是number.不然就会显示字符串

【C语言】【数据结构初阶】 快排变慢排?怎么个事儿?

一.为何“快排”变“慢排” 我们知道,快排是一种很好的排序算法。但是在极少数的一些情况下,“快速排序”好像名不副实了。比如:1,2,1,2,1,2,1。。。。。。这样的数列。 …

十七、web网页像素知识

目录: 像素视口 一、像素 像素:- 屏幕是由一个个发光的小点构成,这一个个的小点就是像素- 分辨率:1920 x 1080 说的就是屏幕中小点的数量- 在前端开发中像素要分成两种情况讨论:css像素和物理像素- 物理像素&#xff…

具有电动驱动的四足机器人模型研究(SimulinkMatlab代码)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Mac的docker安装redis

Mac的docker安装redis 1、docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source key-value store that… 12205 …

unity 2018.4.0+SteamVR1.2.2+VRTK3.2.1报错解决

开发案例参考 07-游乐设备选择场景搭建_哔哩哔哩_bilibili 导入之后代码报错Assets/SteamVR/Editor/SteamVR_Settings.cs(135,49): error CS0117: UnityEditorInternal.VR.VREditor does not contain a definition for GetVREnabledDevices 解决方法 打开SteamVR_Settings 脚…

深入了解C语言中scanf()函数的用法

目录 正文 一、基本用法 二、格式化字符串 三、多个输入值 四、错误处理 五、总结 正文 在C语言中,scanf()函数是一个非常有用的输入函数,它允许我们从用户那里获取输入,并将输入存储到指定的变量中。本文将详细介绍scanf()函数的使用方…

【ELK企业级日志分析系统】部署Filebeat+Kafka+Logstash+Elasticsearch+Kibana集群详解(EFLFK)

部署FilebeatKafkaLogstashElasticsearchKibana集群详解 1. Kafka1.1 Kafka概述1.1.1 为什么需要消息队列(MQ)1.1.2 使用消息队列的好处 1.2 消息队列的两种模式1.3 Kafka定义1.3.1 Kafka简介1.3.2 Kafka的特性1.3.3 Kafka系统架构1.3.4 Partation数据路…

微信消息延迟怎么办?

微信是我们常用的聊天工具,那在微信聊天中,相信有很多朋友都遇到过,明明对方的消息已经发过来了,可微信就是没有显示。这就很容易发生误会或者耽误很多事情。 那么微信消息延迟是什么原因导致的呢? 网络信号差 当我们的…

PostgerSQL证书长什么样子

PostgerSQL证书长什么样子 一、证书样式: 重点请看公章:工业和信息化部教育与考试中心 仿冒、假借、诋毁公章,可向工信部和当地公安机关举报 二、发证单位 证书由工业和信息化部教育与考试中心进行制作。 PostgerSQL证书发证单位&…

数据可视化:揭开数据的视觉奇迹

随着大数据时代的到来,我们面临着海量的数据,如何从中获取有价值的信息成为一项重要的挑战。数据可视化作为一种强大的工具,通过图表、图形和交互界面,将数据转化为可视化的形式,帮助我们更好地理解和分析数据。 数据可…

特斯拉降价阴影下,智己如何「登高」?

作者 | 刘然 来源 | 洞见新研社 都说背靠大树好乘凉,但背靠上汽集团的智己汽车,反而水深火热。 2021年,在智己正式向外界公布了“豪华纯电智能轿车”智己L7之后,其CEO刘涛曾放出豪言:“我们在未来的很多年后再回顾今…

工作--输入文档

知识点: 1、find 返回的是对象,找到第一个满足条件的 就停止遍历,返回此对象 !2、async...await 使用场景: 1、一般循环中 不给方法加async...await 2、then里面 的一块是整体 3、watch监听: 数组&…

提高视觉检测系统稳定性的隐藏办法——10G高速图像采集卡

提高视觉检测系统稳定性的隐藏办法——10G高速图像采集卡 目前,随着我国各方面配套基础设施建设的完善,企业技术、资金的积累,各行各业积极探索和大胆的尝试机器视觉技术,实现工业自动化、智能化。在机器视觉系统的使用过程中&am…

SQL 删除重复的电子邮箱

196 删除重复的电子邮箱 SQL架构 表: Person -------------------- | Column Name | Type | -------------------- | id | int | | email | varchar | -------------------- id是该表的主键列。 该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。 删除 所有重复的电…

APK的数字签名检测

检测命令: C:\Program Files\Java\jdk1.8.0_111\bin\jarsigner.exe -verify APK 文 件 路 径 -verbose –certs 当输出结果为“jar 已验证”时,表示签名正常 检测签名的 CN 及其他字段是否正确标识客户端程序的来源和发布者身份 如上图,说明…

第三章:DeepLabV3——重新思考用于语义图像分割的扩张卷积

0.摘要 在这项工作中,我们重新思考了扩张卷积(atrous convolution),这是一种能够明确调整卷积滤波器的感受野(field-of-view)以及控制由深度卷积神经网络计算的特征响应的分辨率的强大工具,应用…

Linux基础(二)用户权限及修改sudo、getent、chmod、chown、yum、systemctl、ln、日期和时间、IP地址管理、网络请求与下载

上接: Linux基础(一)Linux基础命令、vi/vim编辑器_独憩的博客-CSDN博客 目录 用户权限 sudo命令 用户和用户组 用户组管理: 用户管理: getent 权限认知 chmod命令修改权限 chown修改文件文件夹的所属用户和用…