Htmlunit访问框架集内部框架内的框架

时间:2014-07-14 19:56:51

标签: frame htmlunit frameset

我需要访问框架"菜单"

中的表单元素
<html>
<head>
<script>.........
</script>
<title>The Main page</title>
</head>
<frameset onload="init();" rows="70,*" frameborder="0" border="false" framespacing="0">
    <frameset cols="32000,0,0" frameborder="0" border="true" framespacing="0">
            <frame scrolling="no" marginheight="0" marginwidth="0" target="logo" src="about:blank" name="logo"></frame>
            <frame scrolling="no" noresize="" marginheight="0" marginwidth="0" target="temp" src="about:blank" name="temp"></frame><frame scrolling="no" noresize="" marginheight="0" marginwidth="0" target="system" src="about:blank" name="system"></frame>
    </frameset>
    <frameset cols="165,*" frameborder="0" border="false" framespacing="0">
        <frame scrolling="no" noresize="" marginheight="0" marginwidth="3" target="menu" src="about:blank" name="menu"> </frame>
        <frame scrolling="auto" noresize="" marginheight="0" marginwidth="3" target="work" src="about:blank" name="work"></frame>
    </frameset>
</frameset>
</html>

我试过了:

menuPage = (HtmlPage)page.getFrameByName("menu").getEnclosedPage(); 

但我得到的是

<?xml version="1.0" encoding="ISO-8859-1"?>
<html>
  <head/>
  <body/>
</html>

我尝试了不同的其他奇怪的事情,但从未成功获得框架的内容..... 如果有人已经这样做了,我会很乐意得到一些线索......

1 个答案:

答案 0 :(得分:1)

好的,我最终找到了它。 javascript正在加载。但除此之外,最重要的是我没有正确访问框架内容。因此,通过与第一个孩子和sibbling深入研究dom,我到达了看我正在寻找的东西。所以第一个代码工作如下,需要一些调整:

HtmlElement frameset1 = page.getBody();
node = frameset1.getFirstChild().getNextSibling();
HtmlFrame fr1 = (HtmlFrame) node.getFirstChild();
FrameWindow fw1 = (FrameWindow) fr1.getEnclosedWindow();
HtmlPage p1 = (HtmlPage) fw1.getEnclosedPage(); 

感谢您的时间