这是网页的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
。你能帮忙在这里找出我的错误吗?
答案 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");