我需要使用XPATH从网页中选择特定文本。 我的文字如下所示
The "Add Account Offer" request has been submitted successfully with the order number css_334560.
在上面的行中,我需要使用XPATH只获得“css_334560”。有人可以帮助我吗?
HTML: -
<div id="secondColumn" class="floatBreaker">
<div id="mainContents">
<h1>Add Account Offers </h1>
<div class="infoBox">
<div class="topLine">
<div class="txtLineRight">
<div class="txtLineLeft">
<div class="txt">
<span>The "Add Account Offer" request has been submitted successfully with the order number css_334560.</span>
</div>
</div>
答案 0 :(得分:0)
如果使用Java,则可以使用以下代码:
String a = driver.findElement(By.xpath("//div[@class='txt']/span")).getText();
a = a.substring(a.lastIndexOf(' ') + 1).replace(".", "");
第一行从span获取文本。第二行取css_334560.
并删除点。
Html代码未满,所以我无法保证xpath是正确的。
答案 1 :(得分:0)
有几种可能性取决于具体情况。
1-获取包含特定文本的文本节点: 我使用&#34;添加帐户优惠&#34;但你可以使用&#34; css _&#34;或该文本节点唯一的任何其他文本。
如果有一些匹配的文本节点:(获取它们并循环遍历它们,逐个检查它们)
var snapElements = document.evaluate(
'.//text()[contains(.,"Add Account Offer")]',
document.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
如果只有一个匹配的文本节点
var txt = document.evaluate(
'.//text()[contains(.,"Add Account Offer")]',
document.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
2-另一方面,如果<div class="txt">
是唯一的(页面上只有一个),如果它更快得到它:
var txt = document.querySelector('.txt');
if (txt) { txt = txt.textContent; }
也可能......
var txt = document.getElementsByClassName('txt');
if (txt[0]) { txt = txt[0].textContent; }
获取整个文本后,现在您可以使用(例如)RegEx来获取所需的部分...例如:
var css = txt.match(/css_\d+/);
祝你好运
:)