在 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 代理捕获网络流量?