0

我最初的问题令人困惑,我重写了它。现在清楚多了。

您好我正在尝试使用 HtmlUnit 浏览网页。我正在尝试转到 url-> 在文本框中输入文本(在第 1 帧中)-> 按搜索按钮(在第 1 帧中)-> 转到作为搜索结果出现的新帧(第 2 帧)。

当我写这段代码时:

HtmlPage page = webClient.getPage("http://someurl.com");

HtmlPage toolbar = (HtmlPage) page.getFrameByName("toolbar").getEnclosedPage(); //GET TOOLBAR FRAME 

HtmlTextInput searchBox = toolbar.getElementByName("query"); //GET TEXT BOX ELEMENT

searchBox.setValueAttribute("SOME STRING"); //FILL TEXT BOX ELEMENT WITH TEXT

List<HtmlElement> elements1 = (List<HtmlElement>) toolbar.getByXPath(<SOME XPATH>); //LIST OF A SINGLE ELEMENT WHICH IS THE SEARCH BUTTON

HtmlElement element2 = elements1.get(0); // GET SEARCH BUTTON ELEMENT FROM LIST

page = element2.click();  // CLICK SEARCH BUTTON AND LOAD NEW PAGE TO "page"

我正在寻找"SOME STRING". 当我这样做时,会出现另一个页面(虽然不刷新页面,但 URL 永远不会刷新),并带有一个附加框架。所以现在,我点击搜索按钮,但新page的只是toolbar框架的网页,而不是整个网页。

我现在想访问附加框架。那么如何“退出”当前帧并选择新帧呢?

4

1 回答 1

0

我通过反复试验找到了答案。

page = (HtmlPage) searchButton.click().getEnclosingWindow().getTopWindow().getEnclosedPage();
page = (HtmlPage) page.getFrameByName("Frame 1").getEnclosedPage();
page = (HtmlPage) page.getFrameByName("Frame 2").getEnclosedPage();

效果很好,希望能帮到大家。

于 2013-06-21T14:23:03.410 回答