登录后单击“确定”后,HTMLUnit找不到任何元素

时间:2014-02-19 09:40:31

标签: iframe login htmlunit

我在HtmlUnit面临的问题上获得了一些帮助。

我需要做的是登录我的应用程序,转到主页并在我的主页上获取所有链接,文本字段,按钮等的列表。

我尝试编码,这就是我能做的。

  1. 我可以启动页面,找到登录控件,输入用户ID和密码,然后单击“登录”。
  2. 登录成功。此时,我的应用程序显示主页,该主页由顶部的iFrame屏蔽,显示上次登录时间和其他详细信息。有一个OK按钮,我必须单击该按钮才能取消屏蔽基础主页。
  3. 我也可以点击“确定”按钮。
  4. 现在这就是我无法做到的事情。

    单击“确定”后,基础主页将被取消屏蔽,但我的HtmlPage对象为空(非空)。

    以下是我的代码。

    import java.io.IOException;
    import java.net.MalformedURLException;
    
    import com.gargoylesoftware.htmlunit.Page;
    import com.gargoylesoftware.htmlunit.WebClient;
    import com.gargoylesoftware.htmlunit.WebResponse;
    import com.gargoylesoftware.htmlunit.html.HtmlButton;
    import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
    import com.gargoylesoftware.htmlunit.html.HtmlForm;
    import com.gargoylesoftware.htmlunit.html.HtmlPage;
    import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
    
    public class HTMLUnitSample {
        public static void main(String args[]){
            final WebClient webClient = new WebClient();
            webClient.getOptions().setJavaScriptEnabled(true);
            webClient.getCookieManager().setCookiesEnabled(true);
            webClient.getOptions().setThrowExceptionOnScriptError(false);
            webClient.getOptions().setPopupBlockerEnabled(false);
    
            try{
                //Get the first page
                final HtmlPage loginPage = webClient.getPage("http://****:****/****/****");
    
    
                //Fill up the login form
                loginPage.getElementById("USERID").setAttribute("value", "****");
                loginPage.getElementById("user_pwd").setAttribute("value","****");
    
                final HtmlForm loginForm = loginPage.getFormByName("frmLogin");
                HtmlSubmitInput button = loginForm.getInputByName("submit");
                HtmlPage homePage = button.click();
    /*          
                    System.out.println("Body - " + homePage.getBody().asText());
                System.out.println("No. of Frames in Home Page - " + Inte    ger.toString(homePage.getFrames().size()));
                System.out.println("Total no. of elements on Home Page - " + Integer.toString(homePage.getElementsByTagName("*").size()));*/
    
                //Click the OK button
                HtmlButtonInput okButton = (HtmlButtonInput)homePage.getElementByName("Ok");
                HtmlPage homePage2 = okButton.click();
    
                System.out.println(homePage2.asText());
    
                System.out.println("Done");
            }
            catch(MalformedURLException e){
                e.printStackTrace();
            }
            catch(IOException e){
                e.printStackTrace();
            }
    
        }
    }
    

    我得到的输出

    System.out.println(homePage2.asText());
    

    只是一个空字符串。

    我甚至尝试过

    homePage2.getElementsByTagName("*");
    

    但徒劳无功。

    我需要的是在单击OK后在主页上实际找到元素。 请帮我。非常感谢任何一点帮助。

0 个答案:

没有答案