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();
时间: 2024-10-25 16:57:00

selenium玩转svg操作的相关文章

线条之美,玩转SVG线条动画

线条之美,玩转SVG线条动画 作者:AlloyTeam www.alloyteam.com/2017/02/the-beauty-of-the-lines-break-lines-svg-animation/ 如有好文章投稿,请点击 → 这里了解详情 通常来说web前端实现动画效果主要通过下面几种方案: css动画:利用css3的样式效果可以将dom元素做出动画的效果来. canvas动画:利用canvas提供的API,然后利用清除-渲染这样一帧一帧的做出动画效果. svg动画:同样svg也提供

强大的svg操作库——Raphael

先常规先引入Raphael库: <script src="raphael.js" type="text/javascript"></script> 然后就很简单了,直接操作,也不用再手动写svg什么的. 1.新建画布 //x,y是画布的定位,w,h是画布的宽高 let paper = Raphael(x,y,w,h); 2.建立图形 // Raphael总共有6种图形画,其中path是万能的 let rect = paper.rect(50,

selenium 配合sikuli script操作高德地图

会不会使用工具,是一般QA和高级QA的区别 ---To be crazy Java就是好,开源框架遍地都是,各种niubility的jar包,各种神器,真是不亦乐乎. 今天研究一下基于图片识别作为对象的niubility的sikuli框架. MIT的研究人员设计了一种新颖的图形脚本语言Sikuli,计算机用户只须有最基本的编程技能(比如会写print"hello world"), 他不需要去写出一行行代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序. 简单了解一下: 官网

selenium之封装登陆操作

# selenium 封装登录操作举例 import os, time # from selenium import webdriver class LoginPage(): '''登录模块''' def __init__(self, path=''): '''初始化加载驱动''' if path: chrome_path = path else: chrome_path = "C:\\Users\\nriet\AppData\Local\Google\Chrome\Application\ch

selenium webdriver 截屏操作

有时候我们需要进行截屏操作,特别是遇到一些比较重要的页面信息(出现错误)或者出现不同需要进行对比时, 我们就需要对正在处理的页面进行截屏! 未经作者允许,禁止转载! package test_wait20161205; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.openqa.selenium.OutputType; import org.o

selenium与chromedriver的操作

第一次尝试通过webdriver操作chrome 在网上找了些文章了解怎么配置 首先是下载chromedriver,下载地址:http://chromedriver.storage.googleapis.com/index.html 我走了挺多弯路 chromedriver版本都有对应的chrome版本 刚开始我没有考虑到这一点 对应版本如下: chromedriver版本 支持的Chrome版本 v2.32 v59-61 v2.31 v58-60 v2.30 v58-60 v2.29 v56-

selenium+python自动化之操作浏览器

一.打开网站 1.第一步:从selenium里面导入webdriver模块 2.打开Firefox浏览器(Ie和Chrome对应下面的) 3.打开百度网址 二.设置休眠 1.由于打开百度网址后,页面加载需要几秒钟,所以最好等到页面加载完成后再继续下一步操作 2.导入time模块,time模块是Python自带的,所以无需下载 3.设置等待时间,单位是秒(s),时间值可以是小数也可以是整数 三.页面刷新 1.有时候页面操作后,数据可能没及时同步,需要重新刷新 2.这里可以模拟刷新页面操作,相当于浏

Selenium IDE录制登录操作,导出Java / Junit 4 / WebDriver

Selenium IDE可以录制简单的浏览器操作,然后导出成想要的对应的代码. 在用Selenium 2.46正式做一些事情之前,我打算先用IDE录制简单的登录操作,然后导出成Java代码,给自己后面直接写代码做个范例. [Selenium IDE下载] 上官网找到最新的IDE下载链接:http://release.seleniumhq.org/selenium-ide/2.9.0/selenium-ide-2.9.0.xpi [Selenium IDE安装] 打开FireFox浏览器 -> 附

Selenium系列之--07 操作远程浏览器

Selenium做远程控制,可以通过如下两种方式 a.  客户机启Selenium Standalone Server 作为远程的服务,服务端通过RemoteWebDriver类调用客户机: b.  通过Selenium Grid 实现分布式执行测试: 一.环境准备 1. 安装JDK(jdk1.8.0_101);2. 下载安装firefox,chrome浏览器 ;3. 下载selenium-server-standalone.jar (官方下载地址);4. 下载InternetExplorerD