我正在撰寫一個 xpath 并希望在該元素中獲取文本,這是我最后所期望的,我想獲得文本1 Schools Found。并排除 a 標簽內的文本,即清除,這是我撰寫的 xpath,但不確定如何排除/忽略 a 標簽內容
這是 HTML
<p _ngcontent-omv-c171="" class="fs-14 mb-2"> 1 Schools Found.
<a _ngcontent-omv-c171="" id="clearSearch" color="dark"
class="btn pmd-btn-link pmd-btn btn-dark pmd-btn-flat" href=""> Clear</a>
</p>
這是我的實作,它作業正常,但也像我所說的那樣獲取標簽文本但不想要它。
這是我的作業 xpath 但獲取所有文本
//p[@class='fs-14 mb-2']
這是我試圖排除 a 標簽文本但不起作用的內容
//p[@class='fs-14 mb-2']/*[not(self::a)]
uj5u.com熱心網友回復:
你必須使用
//*[@]/text()
獲取元素內部的文本。
uj5u.com熱心網友回復:
僅使用 XPath 定位器無法實作此目的。
使用 Selenium 提取元素文本時,它會回傳帶有子元素文本的父節點文本。
有幾種方法可以僅獲取父文本。
其中之一是獲取父元素文本(也包含子文本),然后從中洗掉子文本。
在 Java 中,這可以按以下方式完成:
/**
* Takes a parent element and strips out the textContent of all child elements and returns textNode content only
*
* @param e
* the parent element
* @return the text from the child textNodes
*/
public static String getTextNode(WebElement e)
{
String text = e.getText().trim();
List<WebElement> children = e.findElements(By.xpath("./*"));
for (WebElement child : children)
{
text = text.replaceFirst(child.getText(), "").trim();
}
return text;
}
可以在您的情況下呼叫此方法,如下所示:
System.out.println(getTextNode(driver.findElement(By.xpath("//p[@class='fs-14 mb-2']"))));
這也可以用任何其他編程語言來完成。
貸JeffC
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/331706.html
下一篇:如何使用硒單擊角度應用程式按鈕
