当前位置: 首页 > 面试题库 >

如何使用硒从不包含子元素的元素获取文本

姬雪松
2023-03-14
问题内容

的HTML

<div id='one'>
    <button id='two'>i am button</button>
    <button id='three'>i am button</button>
    i am div
</div>

driver.findElement(By.id('one')).getText();

问题答案:

我已经看到这个问题在过去大约一年左右的时间里弹出了几次,我想尝试编写此函数…所以就到这里了。它接受父元素,并删除每个子元素的textContent,直到剩下的是textNode为止。我已经在您的HTML上对其进行了测试,并且可以正常工作。

/**
 * 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.id("one"))));


 类似资料:
  • 问题内容: 的HTML 码 问题答案: 我已经看到这个问题在过去大约一年左右的时间里弹出了几次,我想尝试编写此函数…所以就到这里了。它接受父元素,并删除每个子元素的textContent,直到剩下的是textNode为止。我已经在您的HTML上对其进行了测试,并且可以正常工作。 你叫它

  • (我在下面给出了一个答案,但如果有人能想出一个不那么可怕的解决方案,我会保留这个问题)。

  • 我正在尝试使用以下结构单击element: 但是,这将抛出。 我当前正在使用:刮取(父)元素列表。这标识了正确的元素列表(按预期工作)。有了列表后,我应用以下函数: 使用: 而且 但是,这将触发。 我对此进行了几个小时的研究,基于几个帖子,我添加了“。”在两个斜杠之前,这表示相对于父级(而不是相对于整个DOM)。 如果我移除这个点,我总是得到页面上的第一个元素--而不是列表中每个父元素的子元素。

  • 我正在浏览一个包含几个元素的网页,我想在不包含其子元素的情况下获取其中的文本。 页面结构如下: 当我使用时,得到的结果是: 我正在使用BeautifulSoup4和Python3

  • 我有以下的html代码,我需要console.log只有航运。尝试了一些方法,但似乎无法奏效。我试着先选择它的孩子,然后打印出它的父母的文本内容-不行...我可以删除它的孩子,打印出剩下的东西,但我做不到。 有什么建议吗? 谢谢你的帮助 我试过这个: 我想得到发货,但我仍然得到图例元素的所有文本内容

  • 比起Ruby、Capybara和SitePrism,我更熟悉Java和Selenium,所以如果这个问题太多,我深表歉意。 Selenium有一个非常有用的类来管理Select标签,Selenium::WebDriver::Support::Select,它可以通过传递代表select的Selenium Element(Selenium::WebDriver::Element)来创建。我想得到一个