如何从包含标签文本的<svg>标签中提取文本

时间:2019-11-04 17:58:17

标签: selenium

我想从g标签获取文本,并希望显示在consol上。 总共21行,当我单击它时,它给我弹出窗口(它不是基于Java或基于窗口的弹出窗口),我想从该弹出窗口中获取一些值,并希望在控制台上显示。

单击弹出窗口后,包含3行。每行包含3个td标签。显示了第一个td标签的值,但是很难获取第二个td标签的值。

这里是代码:

<td style=" "        > Manager</td>
<td style="padding-right">
    <svg  width="100%" hight="50%"  id=" ">
        <g>
            <defs....>...</defs>
            <rect....>...</rect>
            <text x="10"  y="24" fill=" " syle=" ">30%</text>
                 </g>
         <g>
            <text x="10"  y="24" fill=" "  syle=" ">70%</text>
            <text x="10"  y="24" fill=" " syle=" ">80%</text>

         </g>
    </svg>
<td>

它已在控制台上显示了“经理”,但在控制台上打印文本“ 30%”,70%和80%时遇到困难。

这是显示一个元素的路径。

//div[@id='performanceMeasureDetailsModel']//div[2]//table[1]//tbody[1]//tr[1]//td[2]//* [name()='svg']//*[name()='g'][1]//*[text()='50%']

给出了必需的元素,但是文本可以变化,因此它的动态路径是什么。同样的方法想打印第二个g标签的值,并打印所有21行。

如果有人知道如何获取包含文本的文本标签?将会有很大的帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

xpath下面尝试。这应该标识所有21个元素。

//*[name()='svg']//*[name()='text']

获取所有元素文字

WebDriverWait wait = new WebDriverWait(driver, 20);         
List<WebElement> Items=wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//*[name()='svg']//*[name()='text']")));
        for(int i=0;i<Items.size();i++)
        {
            System.out.println(Items.get(i).getText());

        }