getText()方法返回空字符串

时间:2016-11-03 11:40:15

标签: 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 class="leftJustifyStyle" data-ctl="Text">30,980,030.0000</span>
</span>
</div>

我的意图是提取值30,980,030.0000 我使用以下代码:

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

但是,getText()返回一个空字符串。 xpath是正确的,因为我没有NoSuchElementException。你能帮忙在这里找出我的错误吗?

5 个答案:

答案 0 :(得分:4)

您可以在下面试一下,看看是否打印了价值:

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

如果它仍然发生,你可以尝试几秒钟等待,然后尝试找到元素并获取文本。

答案 1 :(得分:4)

我可能认为你的元素是隐藏的,所以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");

答案 2 :(得分:0)

String amount = driver.findElement(By.xpath(".//*td[@class='gridCell wrapText']//div[@class='oflowDivM']//span//span[@class='leftJustifyStyle']")).getText();

这应该有效 - 只需确保类名在HTML中正确...

答案 3 :(得分:0)

试试这个:

字符串详细信息=&#34;&#34;;

的Thread.sleep(3000);

details = driver.findElement(By.xpath(&#34; // td / div // span&#34;))。getAttribute(&#34; value&#34;);

答案 4 :(得分:0)

从我发现的getText()有时会返回空字符串(例如,如果元素被隐藏了。我不确定是否是唯一的情况,也不是原因)。

无论如何,对我有用的是getAttribute("textContent")

那么如下:

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