1

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 null を取得します。

次のように 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 の本文コンテンツを取得する方法を教えてください。

4

1 に答える 1

2

iframe に切り替える必要があります。その後、コンテンツを操作できます。たとえば、ボディを取得するには:

driver.switchTo().frame(driver.findElement(By.id("sharetools-iframe"))).findElement(By.tagName("body"));
于 2012-12-03T07:17:14.093 に答える