Selenium getText()方法返回空字符串

Selenium getText()方法返回空字符串,selenium,selenium-webdriver,Selenium,Selenium Webdriver,这是网页的HTML: <td class=" gridCell wrapText " style="height:27px;" headers="a15" data-post="" title=""> <div class="oflowDivM "> <span> <script src="webwb/pzpega_control_text_12877380907.js!!.js" type="text/javascript"/> <span

这是网页的HTML:

<td class=" gridCell wrapText " style="height:27px;" headers="a15" data-post="" title="">
<div class="oflowDivM ">
<span>
<script src="webwb/pzpega_control_text_12877380907.js!!.js" type="text/javascript"/>
<span class="leftJustifyStyle" data-ctl="Text">30,980,030.0000</span>
</span>
</div>

但是,
getText()
返回一个空字符串。xpath的
xpath
是正确的,因为我没有得到
NoTouchElementException
。您能帮我确认一下我的错误吗?

请尝试下面的方法,看看是否打印了值:

driver.findElement(By.xpath("//td/div/span/span")).getAttribute("innerText");
如果仍然发生这种情况,可以尝试等待几秒钟,然后尝试查找元素并获取文本

String amount = driver.findElement(By.xpath(".//*td[@class='gridCell wrapText']//div[@class='oflowDivM']//span//span[@class='leftJustifyStyle']")).getText();
这应该行得通-只要确保类名与HTML中的类名一样正确…

试试以下方法:

字符串详细信息=”

睡眠(3000)


details=driver.findElement(By.xpath(“//td/div//span”).getAttribute(“value”)

我可能认为您的元素是隐藏的,所以getText()返回空白。@JeffC的评论应该可以解决您的问题。否则,请尝试下面的代码:

Thread.sleep(5000);
string text = driver.findElement(By.cssSelector("td > div span.leftJustifyStyle")).getAttribute("innerText");
或者只查找包含长度超过2个字符的字符串的范围

Thread.sleep(5000);
string text = driver.findElement(By.xpath("//td/div/span/span[string-length(normalize-space(text())) > 2]")).getAttribute("innerText");

据我所知,
getText()
有时返回空字符串(例如,如果元素是隐藏的,我不确定是否是唯一的情况,也不确定原因)

不管怎样,对我有效的是
getAttribute(“textContent”)

那么像这样的事情怎么样:

driver.findElement(By.xpath("//td/div/span/span")).getAttribute("textContent");

driver.findElement(By.xpath(“/td/div/span/span”)).getAttribute(“innerText”);返回NullPointerException。添加wait也会导致返回空字符串。您是否可以尝试将此元素存储到WebElement类型的变量中,然后检查它是否正在打印其定义的属性。此外,请检查元素是否可见或未使用element.isDisplayed();打印此值并查看它在此处打印的值字符串:(已编辑我的答案-重试…还请交叉检查此处使用的类名与HTMLwhy中的实际类名,而不是仅按类名重试…driver.findElement(by.classname(“leftJustifyStyle”)).getText();我也试过了,但结果是一个空字符串。xpath工作正常,但getText()返回一个空字符串。您可以共享指向html页面的链接吗?对不起,网站只在我的客户端网络中打开try
System.out.println(driver.findelelement(By.xpath(//td/div/span/span”).getAttribute(“outerHTML”))
。它正在打印您期望的元素吗?如果打印了,请在该行上放置一个断点,让脚本运行直到中断,然后运行该行…现在可以运行了吗?如果可以,您可能需要在其中等待。这会导致NullPointerException,因为从html“3098030.0000”中看,没有属性“value”这是您实际需要的文本吗?请给我页面,请附加链接尝试以下内容:driver.findElement(By.xpath(../*div[@class='oflowDivM']///span//.getText();或driver.findElement(By.xpath(../*div[@class='oflowDivM']///span///span)).getAttribute(“值”);不幸的是,该网站仅在客户端网络中打开。xpath不起作用。我怀疑有什么东西阻止getText()读取值,因为所有尝试的xpath都在识别元素,但是getText()返回空字符串
driver.findElement(By.xpath("//td/div/span/span")).getAttribute("textContent");