2

最初のリンクにマウスオーバーしたときにリンクにリンクのドロップダウンリストがある場合、HtmlUnit を使用してリンクをクリックすることは可能ですか? 最初のリンクをクリックしても、マウスオーバーしたときにドロップダウンするリンクのリストが表示される以外は何も起こりません。ドロップダウン リンクの 1 つをクリックして、そのリンクに関連付けられている Web ページを取得したいと考えています。

問題は、アンカーに JavaScript があり、ドロップダウン リストであることです。アンカーに JavaScript がなく、ドロップダウンがなければ、問題はありません。

関連する JavaScript コードは次のとおりです。

<script language='JavaScript' type='text/javascript'>
<!--
function mmLoadMenus(){
 window.mm_menu_0805151542_0 = new Menu("root",211,23,"Arial, Helvetica, sans-serif",11,"#FFFFFF","#FFFFFF","#056CB9","#014D98","left","middle",3,0,1000,-5,7,true,false,true,2,true,false);
  mm_menu_0805151542_0.addMenuItem("View&nbsp;Tax&nbsp;Sales","window.open('TCTaxSaleBrief.asp', '_blank','width=800,height=580,scrollbars=1,resizable=yes,top=50,left=100');");
  mm_menu_0805151542_0.addMenuItem("Registration&nbsp;Renewal&nbsp;Reprint","window.open('vrRenewal.asp', '_blank','width=800,height=580,scrollbars=1,resizable=yes,top=50,left=100');");
  mm_menu_0805151542_0.addMenuItem("Drivers&nbsp;License","window.open('http://www.dds.ga.gov/', '_blank');");
  mm_menu_0805151542_0.addMenuItem("Online&nbsp;Tag&nbsp;Renewals","location='../TaxCommissioner/TagRenewal.html'");
   mm_menu_0805151542_0.hideOnMouseOut=true;
   mm_menu_0805151542_0.bgColor='#CCCCCC';
   mm_menu_0805151542_0.menuBorder=0;
   mm_menu_0805151542_0.menuLiteBgColor='#FFFFFF';
   mm_menu_0805151542_0.menuBorderBgColor='#015BA7';

</script>

関連するアンカーは次のとおりです。

<a href="#" name="link11" class="nav" id="link10" onmouseover="MM_showMenu(window.mm_menu_0805151542_0,104,0,null,'link11')" onmouseout="MM_startTimeout();">Online Services</a><br />

これを機能させるために使用している Java コードのスニペットを次に示します。

WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10);
    String webPage="http://website.html";
    try {
        HtmlPage taxComPage = webClient.getPage(webPage);
        HtmlElement htmlElement = taxComPage.getDocumentElement();
            //HtmlAnchor anchor = taxComPage.getAnchorByText("View Tax Sales");
        //HtmlAnchor htmlAnchor = taxComPage.getHtmlElementById("link10");
        HtmlAnchor anchor = taxComPage.getAnchorByText("Online Services"); 

        HtmlPage page = anchor.click();
    }catch

HtmlUnit が JavaScript で動作しない場合は、お知らせください。

ありがとう

mmLoadMenus() と呼ばれるこの関数があることは理解しています。これには、マウスを重ねたときに表示されるテキストがありますが、この関数がアンカーにどのように関連付けられているかという問題があります。アンカーには MM_showMenu というものがあります。この MM_showMenu は何を作成したのか、これは JavaScript のキーワードであり、どこにも定義されているようには見えません。ページ全体を検索しましたが、言及されているのはアンカーだけです。パラメータが window.mm_menu_0805151542_0,104,0,null,'link11' に渡される関数のようなものです。関数 mmLoadMenus() とアンカーの間で確立できる唯一の接続は、アンカーに mm_menu_0805151542_0 が含まれていることです。私は JavaScript にそれほど精通していないため、JavaScript 関数とアンカーを強く結び付けていないのかもしれません。

4

1 に答える 1

0

データはすでにページ上にあるので、JavaScript 関数自体からスクレイピングしてみませんか。テキストを解析するだけで、強制的にロードするよりもはるかに簡単です。

于 2013-01-08T10:39:24.480 に答える