从SVG selenium java获取文本
我可以从SVG中的文本标记获取文本。我附加HTML从SVG selenium java获取文本,java,html,selenium,testing,svg,Java,Html,Selenium,Testing,Svg,我可以从SVG中的文本标记获取文本。我附加HTML <svg width="553" height="200" style="overflow: hidden;" aria-label="A chart."> <defs id="defs"> <rect x="0" y="0" width="553" height="200" stroke="none" stroke-width="0" fill="#ffffff"> <g
<svg width="553" height="200" style="overflow: hidden;" aria-label="A chart.">
<defs id="defs">
<rect x="0" y="0" width="553" height="200" stroke="none" stroke-width="0" fill="#ffffff">
<g>
<text text-anchor="start" x="77" y="22.85" font-family="Arial" font-size="11" font-weight="bold" stroke="none" stroke-width="0" fill="#000000">Clustering done on Mar 30, 2017 11:13 AM</text>
<rect x="77" y="13.5" width="400" height="11" stroke="none" stroke-width="0" fill-opacity="0" fill="#ffffff">
</g>
聚类于2017年3月30日上午11:13完成
我想获得的get是2017年3月30日上午11:13完成的
聚类
此定位器应该可以工作:
String text=driver.findElement(By.xpath(“/[@id='divClusters']//*[name()='svg'和@aria label='A chart.']//*[name()='g']”)。getText(); 系统输出打印(文本);
-删除//div
以搜索整个文档,而不仅仅是在当前选定的上下文元素中- 删除绝对
divs引用,因为它不可靠/div[1]/..
- 将svg元素称为
/*[name()='svg']
- 向svg元素添加一些有意义的属性
@aria label='A chart.
- svg中的元素应该以相同的方式处理:
——感谢Andersson对此的澄清/*[name()=“g”],//*[name()=“defs”]
driver.findElement(By.cssSelector("#divClusters svg > g > text")).getText();
请将代码张贴在您试图获取“String text=driver.findElement”(By.xpath(“./[@id='divClusters']]]/div[1]/div[1]/div/svg/g[1]/text”))的文本可能重复的地方。getText();'System.out.print(text)这是错误消息org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素@japu-d-cret可能与否重复,您将无法以这种方式找到
svg
元素。我们是否应该使用*[name()='svg']
而不是///svg
?是的。正是/*[name()='svg']svg
中的元素应以相同的方式处理:/*[name()=“g”]
,/*[name()=“defs”]
…同时修复//g
driver.findElement(By.xpath("//*[local-name='svg']//*[local-name='g']//*[local-name='text']")).getText();