在 Selenium WebDriver 上如何从 Span Tag 中获取文本

Posted

技术标签:

【中文标题】在 Selenium WebDriver 上如何从 Span Tag 中获取文本【英文标题】:On Selenium WebDriver how to get Text from Span Tag 【发布时间】:2013-10-14 19:39:55 【问题描述】:

在 Selenium Webdriver 上,我如何从 span 标签中检索文本并打印?

我需要提取文字UPS Overnight - Free

html代码如下:

div id="customSelect_3" class="select_wrapper">
<div class="select_display hovered">
<span class="selectLabel clear">UPS Overnight - Free</span>

使用以下代码:

String kk = wd.findElement(By.xpath(//*[@id='customSelect_3']/div[1]/span)).getText();
System.out.println(kk);

但上面的代码正在返回/打印文本:1

【问题讨论】:

谢谢大家的好建议,但不幸的是,他们都没有得到预期的结果。结果仍然显示 1 文本是否可见?使用Java时,我遇到了BR标签返回空的问题。我使用 .getAttribute("innerHTML") 而不是 .getText(),它会返回我正在寻找的内容,包括任何不可见的 HTML 或隐藏的文本。 【参考方案1】:

您的代码应为 -

String kk = wd.findElement(By.cssSelector("div[id^='customSelect'] span.selectLabel")).getText();

使用 CSS。它更清洁、更容易。如果这能解决您的问题,请告诉我。

【讨论】:

【参考方案2】:

我同意 css 更好。如果您确实想通过 Xpath 执行此操作,您可以尝试:

    String kk = wd.findElement(By.xpath(.//*div[@id='customSelect_3']/div/span[@class='selectLabel clear'].getText()))

【讨论】:

【参考方案3】:

如果您更愿意使用 xpath 并且该跨度是您的 div 下方的唯一跨度,请使用下面的示例。我建议使用 CSS(参见 sircapsalot 的帖子)。

String kk = wd.findElement(By.xpath(//*[@id='customSelect_3']//span)).getText();

css 示例:

String kk = wd.findElement(By.cssSelector("div[id='customSelect_3'] span[class='selectLabel clear']")).getText();

【讨论】:

【参考方案4】:

也许 span 元素被隐藏了。如果是这种情况,请使用 innerHtml 属性:

通过.css:

String kk = wd.findElement(By.cssSelector("#customSelect_3 span.selectLabel"))
              .getAttribute("innerHTML");

通过.xpath:

String kk = wd.findElement(By.xpath(
                   "//*[@id='customSelect_3']/.//span[contains(@class,'selectLabel')]"))
              .getAttribute("innerHTML");

“/.//”的意思是“在选定的元素下面看”。

【讨论】:

谢谢,.getAttribute("innerHTML") 真的解决了我的问题【参考方案5】:
String kk = wd.findElement(By.xpath(//*[@id='customSelect_3']/div[1]/span));

kk.getText().toString();

System.out.println(+kk.getText().toString());

【讨论】:

周围有一点文字会很好;)【参考方案6】:

Pythonic 从 Span 标签中获取文本的方式:

driver.find_element_by_xpath("//*[@id='customSelect_3']/.//span[contains(@class,'selectLabel clear')]").text

【讨论】:

【参考方案7】:

从span标签获取文本的php方式:

$spanText = $this->webDriver->findElement(WebDriverBy::xpath("//*[@id='specInformation']/tbody/tr[2]/td[1]/span[1]"))->getText();

【讨论】:

【参考方案8】:

您需要定位元素并使用 getText() 方法提取文本。

WebElement element = driver.findElement(By.id("customSelect_3"));
System.out.println(element.getText());

【讨论】:

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

如何使用C#中的Selenium Webdriver使用Chrome浏览器的Cookie?

如何从iframe返回到主页面以处理主页元素 - 使用selenium webdriver [关闭]

如何使用适用于 Chrome Windows 10 的 WebDriver 在 Eclipse (Java) 上安装 Selenium

如何在 Python 上使用 selenium webdriver 和 browsermob 代理捕获网络流量?

如何在Firefox 58 ++上使用适用于Selenium的PHP Webdriver下载文件

如何使用selenium从WebDriver获取cookie值?