【问题标题】:how to get body holding the content of iframe in java如何在java中获取包含iframe内容的body
【发布时间】:2012-11-30 13:24:25
【问题描述】:

我正在获取 iframe 标签下的数据。我想要 body 标签下的数据。但是我没有得到正确的输出。这是我的 HTML 页面如下所示:

<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。我还按如下方式进行了类型转换:

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

但是让 iframeElement 为空。

我也使用过jsoup解析器如下:

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

在这里,我将输出 &lt;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"&gt;&lt;/iframe&gt; 作为 iframeElement,但没有获取正文内容。

请指导我如何获取 iframe 的正文内容。

【问题讨论】:

  • 你检查过htmlPage的内容吗?

标签: java html iframe selenium


【解决方案1】:

您需要切换到 iframe,然后才能与内容进行交互。 例如获取正文:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    相关资源
    最近更新 更多