0

元の質問がわかりにくかったので、書き直しました。今ではもっとはっきりしています。

こんにちは、HtmlUnit を使用して Web ページをナビゲートしようとしています。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 に答える