我想从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行。
如果有人知道如何获取包含文本的文本标签?将会有很大的帮助。谢谢。
答案 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());
}