如何从Selenium Java中的SVG标记内的“文本”标记获取值

时间:2019-05-24 10:44:30

标签: java selenium svg ui-automation

我正在尝试从图形上不可见的SVG元素内部获取文本值。但是,当我将鼠标悬停在其上时,它会给出工具提示值

我能够将鼠标悬停在元素上,但无法获取该值。

@FindBy(how=How.XPATH,using = "//*[name()='svg']//*[name()='g']//*[contains(@class,'')]//*[@visibility='hidden']")
    public static WebElement newgraph;

new Actions(driver).moveToElement(newgraph).clickAndHold().moveByOffset(0, 0).pause(1000).perform();
    /*    Actions builder = new Actions(driver);
        builder.moveToElement(newgraph).perform();*/
        String tooltip_msg = newgraph.getText();
        System.out.println(tooltip_msg);

下面是HTML     

<g class="highcharts-label highcharts-tooltip highcharts-color-undefined" 
style="cursor:default;pointer-events:none;white-space:nowrap;" 
transform="translate(212,-9999)" opacity="0" visibility="visible"><path 
fill="none" class="highcharts-label-box highcharts-tooltip-box" 
isShadow="true" stroke="#000000" stroke-opacity="0.049999999999999996" 
stroke-width="5" transform="translate(1, 1)"><text x="8" style="font- 
size:12px;color:#333333;fill:#333333;" y="20">

<tspan style="font-weight:bold; fill:#4fb3c3">Licensed: </tspan><tspan 
style="font-weight:bold" dx="0">560</tspan><tspan x="8" dy="15">May 24, 
2019</tspan></text>
</g>
</svg>

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此xpath:

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

它正在查找所需的节点。

只需找到使用.getText()来提取日期的网络元素即可。

如果您还有其他顾虑,请告诉我。