如何从硒的跨度中获取文本

Posted

技术标签:

【中文标题】如何从硒的跨度中获取文本【英文标题】:How to get text from span in selenium 【发布时间】:2016-12-18 00:33:06 【问题描述】:

我想获取文本 All New Products and Launches 我正在尝试这个

driver.findElement(By.xpath(".//*[@id='iselmf-folder-detail']/h2/span")).getText();

但它正在打印文件夹

<h2 class="iselmf-h2-icon">
<span>Folder:</span>
All New Products and Launches
</h2>

【问题讨论】:

driver.findElement() 将返回另一个 web 元素,您可以从该元素简单地进行另一个查询以按标签名称(在本例中为 span)查找。 从你的 xpath 中移除 /span 【参考方案1】:

span 属性获取文本时,我遇到了非常相似的问题。解决方案是像这样使用.getAttribute("value")

driver.findElement(By.xpath(".//*[@id='iselmf-folder-detail']/h2/span")).getAttribute("value");

**String org.openqa.selenium.WebElement.getAttribute(String name)**

【讨论】:

【参考方案2】:

查看 html 标签

<span>Folder:</span>

/span 表示这是跨度的结束,因此如果您使用跨度作为标识符,那么它只会返回文件夹。

span的父元素是h2标签。因此,要获取 h2 和 /h2 标记之间的所有内容,您需要执行此操作 -

driver.findElement(By.xpath(".//*[@id='iselmf-folder-detail']/h2")).getText();

【讨论】:

driver.findElement(By.xpath(".//*[@id='iselmf-folder-detail']/h2/span")).getText();这个 sn-p 会做同样的事情,它会从 span 中检索文本。看起来你想说 driver.findElement(By.xpath(".//*[@id='iselmf-folder-detail']/h2")).getText(); 正确,抱歉并感谢您的更正!已更新。【参考方案3】:

有两种方法可以做到这一点,

1) driver.findElement(By.xpath(".//*[@id='iselmf-folder-detail']/h2")).getText();

2) 从两者中获取文本,然后将其连接起来,类似于

String firstblock = driver.findElement(By.xpath(".//*[@id='iselmf-folder-detail']/h2")).getText();
String secondblock = driver.findElement(By.xpath(".//*[@id='iselmf-folder-detail']/h2/span")).getText(); 
String finaltext= firstblock+secondblock;

【讨论】:

【参考方案4】:

文本位于&lt;h2&gt; 标记中,而不是&lt;span&gt; 标记中。试试

driver.findElement(By.xpath(".//*[@id='iselmf-folder-detail']/h2")).getText();

【讨论】:

以上是关于如何从硒的跨度中获取文本的主要内容,如果未能解决你的问题,请参考以下文章

如何从硒网站上获取时间?

如何使用类获取跨度内的文本。 (for循环内部)

如何通过 Selenium 和 Python 从 html 标签跨度获取文本

PHP 通过 id 从跨度中获取文本/值并将其放入具有 cURL 的外部站点的变量中

无法使用 selenium python 获取多个跨度类文本

如何在 Selenium 中使用 @FindBy 注释来处理跨度文本?