2012-11-30 38 views
1

我正在讀取iframe標籤下的數據。我希望數據在body標籤下。但是我沒有得到正確的輸出。這裏是我的HTML頁面看起來像如下:如何在java中獲取iframe的內容

<iframe id="sharetools-iframe" width="100%" height="100%" frameborder="0" style="z-index: 1000; position: relative; visibility: visible; " scrolling="no" allowtransparency="true" src="some url here"></iframe> 
#document 
<html><head><script type="text/javascript">window.WIDGET_ID = 'sharepopup';</script> 
<base href="href here"> 
<link rel="stylesheet" href="href here"> 
<script src="url here"></script> 

<script type="text/javascript" src="url here"></script></head> 
<body> 
body contents are here........ 
.............................. 
</div></div></body></html> 

我用下面的代碼:

WebDriver webDriver = new FirefoxDriver(); 
webDriver.get("url to open"); 
String htmlPage = webDriver.getPageSource(); 
Tidy tidy = new Tidy(); 
InputStream inputStream = new ByteArrayInputStream(htmlPage.getBytes()); 
Document doc = tidy.parseDOM(inputStream, null); 
Element element = doc.getElementById("sharetools-iframe"); 

在這裏我得到元素null.I如下也鍵入鑄造它:

HTMLIFrameElement iframeElement = (HTMLIFrameElement) doc.getElementById("sharetools-iframe"); 

但是獲取iframeElement爲空。

我也用jsoup解析如下:

Document doc = Jsoup.parse(htmlPage); 
org.jsoup.nodes.Element iframeElement= doc.getElementById("sharetools-iframe"); 

在這裏我得到的輸出<iframe id="sharetools-iframe" width="100%" height="100%" frameborder="0" style="z-index: 1000; position: relative; visibility: visible; " scrolling="no" allowtransparency="true" src="some url here"></iframe>作爲iframeElement,但沒有得到主體內容。

請指導我如何獲取iframe的正文內容。

+0

您是否檢查過htmlPage的內容? – user314104

回答

2

您需要切換到iframe,然後才能與內容交互。 例如要獲得body:

driver.switchTo().frame(driver.findElement(By.id("sharetools-iframe"))).findElement(By.tagName("body")); 
+0

感謝Voffa.It正在工作。 – dhananjay