如何使用 getText 捕获未标记行上的文本?

How can I use getText to capture text on lines which aren't tagged?

我有以下网页元素,在浏览器中检查网页元素时看起来像这样:

<p class="mb-2">
    <strong>Your reference is</strong>
    ": "
    "xxxxxxxxx"
</p>

我以前从未见过用行分隔的文本和没有网络元素。

我正在使用 IntelliJ 和 Serenity,以及试图为数字字符串 (xxxxxxxxx) 获取文本的一行,其长度可能会改变。该代码在页面对象中如下所示:

return referenceNumber.getText();

也有人尝试拆分文本 (return referenceNumber.getText().split(" ")[4];) 因为我们只想要 referenceNumber.

但是,我遇到的问题是 return 文本的代码只捕获第一行:

Your reference is

所以我想在这个阶段再多的拆分也无济于事。有没有人知道我如何从本质上识别似乎没有自己的 xpath 的文本行,或者以某种方式将它包含在 WebElement 的 xpath 中,该 WebElement 目前引用丑陋(我打算清理它一旦找到 referenceNumber):

//*[@id='root']/div/main/div/div[1]/div[1]/p[2]/strong

我已经尝试了 text() 的各种组合,但还没有找到一种方法来捕获强标签中第一行之后的任何内容。

根据您的样本,参考号是一个文本节点,是 p 元素的子节点,而不是 strong

您可以使用此 XPath 来定位它:

//p[./strong[contains(.,"Your reference is")]]

然后使用 getText 并使用函数(正则表达式、拆分...)清理结果以提取参考号。

我不知道 IntelliJ 是否支持它,但你可以用 XPath 和一个衬里来做到这一点:

translate(substring-after(//p[./strong[contains(.,'Your reference is')]],":"),'"','')

输出:

xxxxxxxxx