selenium玩转svg操作

今天写脚本发现页面有svg结构,里面的元素无法定位,查找很多资料,然后就记录下来
初步尝试直接在页面中获取svg中包含元素的xpath,直接利用selenium方法访问,无法捕获到相关元素信息。
SVG包含一些图形元素,比如line,rect,circle等,很多情况下我们可以点击SVG上的元素触发一些event,比如打开context menu、在一个pie里选择一个portion等。但是SVG在html看来是一个单独的元素,我们怎么点击svg里的元素呢?下面记录下 Firefox和Chrome上的方法(其他browsers没有试)
解决方案:
用xpath找到元素,新建一个Actions点击就好了,要注意的是定位svg元素要用xpath的name()函数,比如这个locator://svg/line[2],要用//*[name()='svg']/*[name()='line'][2]"代替
代码示例:
WebElement element = driver.findElement(By.xpath(sLocator)); //sLocator like "//*[name()='svg']/*[name()='line'][2]"

  new Actions(driver).click(element).build().perform();

 

posted @   久曲健  阅读(2053)  评论(1编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示