3 回答
TA贡献1853条经验 获得超18个赞
要仅匹配文本“$2000”,您可以使用此 XPath 表达式:
//table[@class='table']/tbody/tr[1]/td/b
要删除“$”或第一个字符,请使用此 XPath 表达式:
substring(//table[@class='table']/tbody/tr[1]/td/b,2)
要获取这些值,请不要使用.getAttribute("value")
,因为这些值没有属性。试试吧.getText()
。(我还删除了By
和的错字findElement
):
String text= driver.findElement(By.xpath("substring(//table[@class='table']/tbody/tr[1]/td/b,2)")).getText();
TA贡献1803条经验 获得超3个赞
首先你需要getText()
,而不是属性。其次,您需要<b
元素的文本,而不是<td
. 你也不需要xpath=
在 xpath 最后,XPath 可以改进:
消除了您不关心的元素(例如
tbody
)不要使用像 那样的索引
tr[1]
,它们会使 xpath 很容易被破坏。而是使用一些有意义的定位器。在这种特殊情况下,您似乎想找到<td
,<th
谁说Amount
。
所以像这样:
String text= driver
.findElement(
By.xpath("//table[@class='table']//th[text()='Amount']/../td/b"))
.getText();
TA贡献1789条经验 获得超8个赞
您是否尝试将<b>
元素添加到 xpath 中?此外,getAttribute() 获取 HTML 标签中的属性,而不是标签内的值。您需要 getText() 函数。
TL;DR:试试这个:
String text = driver.findelement(by.xpath("xpath="//table[@class='table']/tbody/tr[1]/td/b")).getText()
那应该返回$2000
,您可以轻松地剥离 $ 。
添加回答
举报