getText() 方法返回空字符串

Vid*_* NS 3 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>
Run Code Online (Sandbox Code Playgroud)

我的目的是提取值 30,980,030.0000 我正在使用以下代码:

driver.findElement(By.xpath("//td/div/span/span")).getText();
Run Code Online (Sandbox Code Playgroud)

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

Abh*_*nav 5

你能不能试试下面的值,看看是否打印了值:

driver.findElement(By.xpath("//td/div/span/span")).getAttribute("innerText");
Run Code Online (Sandbox Code Playgroud)

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


Bua*_*ban 5

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

Thread.sleep(5000);
string text = driver.findElement(By.cssSelector("td > div span.leftJustifyStyle")).getAttribute("innerText");
Run Code Online (Sandbox Code Playgroud)

或仅查找包含长度超过 2 个字符的字符串的跨度

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