如何使用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 在文本节点内。所以提取文本可以使用以下任一种:

  • 使用 , childNodes:

    System.out.println(((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[2].textContent;', driver.findElement(By.xpath("//div[@class='Travel']"))).toString());
    
  • 使用 , get_attribute("innerHTML"):

    print(driver.find_element_by_css_selector("div.Travel").get_attribute("innerHTML").splitlines()[2])