【问题标题】:How to extract the text from the parent node excluding the text from the child node using Selenium如何使用 Selenium 从父节点中提取文本,不包括子节点中的文本
【发布时间】:2020-08-17 05:42:29
【问题描述】:

我正在尝试获取 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()

【问题讨论】:

    标签: selenium selenium-webdriver xpath css-selectors webdriver


    【解决方案1】:

    对于 Python 使用这个 -

    直接 div 文本 -

    driver.find_element_by_xpath('//div[@class="Travel"]').text()

    通过span标签的Div文本-

    driver.find_element_by_xpath('//span[text()="Cities"])/parent::div').text()

    对于 Java 使用这个 -

    直接 div 文本 -

    driver.findElements(By.xpath('//div[@class="Travel"]')).getText();

    通过span标签的Div文本-

    driver.findElements(By.xpath('//span[text()="Cities"])/parent::div')).getText();

    【讨论】:

      【解决方案2】:

      文本Résultat 在文本节点内。所以提取文本可以使用以下Locator Strategies

      • 使用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])
        

      【讨论】:

        猜你喜欢
        • 2017-01-07
        • 1970-01-01
        • 2021-03-05
        • 2017-12-27
        • 1970-01-01
        • 2020-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多