为了账号安全,请及时绑定邮箱和手机立即绑定

从 TD/B HTML 标签中提取文本 ,xpath="//table[@class

从 TD/B HTML 标签中提取文本 ,xpath="//table[@class

牧羊人nacy 2021-09-03 15:41:49
我正在尝试提取文本“2000”并将其存储在 HTML 下方的字符串中:<table class="table" _ngcontent-c13="">    <tbody _ngcontent-c13="">        <tr _ngcontent-c13="">            <th _ngcontent-c13="" scope="row">Amount</th>            <td class="" _ngcontent-c13="">                <b _ngcontent-c13="">$2000</b>            </td>  <!-- Added by edit -->        </tr>      <!-- Added by edit -->    </tbody>       <!-- Added by edit --></table>           <!-- Added by edit -->我正在尝试低于 XPath,但它正在返回null:String text= driver.findelement(by.xpath("xpath="//table[@class='table']/tbody/tr[1]/td")).getAttribute("value")
查看完整描述

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();



查看完整回答
反对 回复 2021-09-03
?
繁星点点滴滴

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();


查看完整回答
反对 回复 2021-09-03
?
拉丁的传说

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,您可以轻松地剥离 $ 。


查看完整回答
反对 回复 2021-09-03
  • 3 回答
  • 0 关注
  • 398 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信