如何使用 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
我有以下网页元素,在浏览器中检查网页元素时看起来像这样:
<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