如何使用Selenium从父节点中提取文本,不包括子节点中的文本
How to extract the text from the parent node excluding the text from the child node using Selenium
我正在尝试获取 div 的文本,但没有获取子跨度的文本,这是我的 html :
<div class="Travel">
<!--ko text: marketName-->Résultat<!--/ko-->
<span class="label">Cities</span>
</div>
我想得到 Résultat
,但我得到 Résultat Cities
这是我尝试过的:
//div[@class='Travel']//text()
对于 Python 使用这个 -
直接Div文字-
driver.find_element_by_xpath('//div[@class="Travel"]').text()
Div 文本通过 span 标签 -
driver.find_element_by_xpath('//span[text()="Cities"])/parent::div').text()
对于 Java 使用这个 -
直接Div文字-
driver.findElements(By.xpath('//div[@class="Travel"]')).getText();
Div 文本通过 span 标签 -
driver.findElements(By.xpath('//span[text()="Cities"])/parent::div')).getText();
文本 Résultat
在文本节点内。所以提取文本可以使用以下任一种:
-
System.out.println(((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[2].textContent;', driver.findElement(By.xpath("//div[@class='Travel']"))).toString());
使用 python, css-selectors 和 get_attribute("innerHTML")
:
print(driver.find_element_by_css_selector("div.Travel").get_attribute("innerHTML").splitlines()[2])
我正在尝试获取 div 的文本,但没有获取子跨度的文本,这是我的 html :
<div class="Travel">
<!--ko text: marketName-->Résultat<!--/ko-->
<span class="label">Cities</span>
</div>
我想得到 Résultat
,但我得到 Résultat Cities
这是我尝试过的:
//div[@class='Travel']//text()
对于 Python 使用这个 -
直接Div文字-
driver.find_element_by_xpath('//div[@class="Travel"]').text()
Div 文本通过 span 标签 -
driver.find_element_by_xpath('//span[text()="Cities"])/parent::div').text()
对于 Java 使用这个 -
直接Div文字-
driver.findElements(By.xpath('//div[@class="Travel"]')).getText();
Div 文本通过 span 标签 -
driver.findElements(By.xpath('//span[text()="Cities"])/parent::div')).getText();
文本 Résultat
在文本节点内。所以提取文本可以使用以下任一种
-
System.out.println(((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[2].textContent;', driver.findElement(By.xpath("//div[@class='Travel']"))).toString());
使用 python, css-selectors 和
get_attribute("innerHTML")
:print(driver.find_element_by_css_selector("div.Travel").get_attribute("innerHTML").splitlines()[2])