XPATH - 如何从网页获取文本?

时间:2014-04-14 14:05:44

标签: java javascript xpath selenium-webdriver

我需要使用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>

2 个答案:

答案 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+/);
祝你好运 :)