2016-07-25 230 views
0

我想单击HtmlUnit中的按钮登录到网站(m.pge.com),但它不起作用。浏览器停留在同一页面上。我与另一个网站有类似的问题。我试过搜索,但没有得到明确的答案。 任何想法我可能做错了什么?HtmlUnit按钮点击不提交

这里是代码..

Web_Client = new WebClient(BrowserVersion.CHROME); 
    Web_Client.getOptions().setCssEnabled(false); 
    Web_Client.getOptions().setThrowExceptionOnScriptError(false); 
    Web_Client.setJavaScriptTimeout(15000); 
    Web_Client.getOptions().setRedirectEnabled(true); 

    //Web_Client.setAjaxController(new NicelyResynchronizingAjaxController()); 
    // load home page 
    HtmlPage page = Web_Client.getPage("https://m.pge.com/#login"); 
    HtmlTextInput userName = loginForm.getFirstByXPath("//*[@id=\"usernameField\"]"); 
    HtmlPasswordInput passWord = loginForm.getFirstByXPath("//*[@id=\"passwordField\"]"); 
    userName.setValueAttribute(user); 
    passWord.setValueAttribute(password); 
    HtmlButton button = null; 
    DomNodeList<DomElement> buttonList = page.getElementsByTagName("button"); 
    for (Iterator buttonIter = buttonList.iterator(); buttonIter.hasNext();) { 
     DomElement domElement = (DomElement) buttonIter.next(); 
     if(domElement.asText().equals("SIGN IN")) { 
      button = (HtmlButton)domElement; 
     } 
    } 

    loginpage = button.click(); 

回答

0

实在是太繁琐,不清楚输入评论,所以我键入它的答案,将与最新进展情况。

第一部分:登录 第一件事是您确定您正确定位按钮,并且您在何处初始化HtmlPage登录页面。通常情况下,当你将

loginpage = button.click(); 

这将让你的登录页面,但有时很是怪异,它不分配新的页面,而是改变当前页面。那就是你的

page 

你可以尝试打印出来,然后按钮点击按钮后,看看这个页面是否改变?这是

System.out.println(page.asText()); 
button.click(); // no need to assign page, if the page changes itself 
System.out.println(page.asText()); 

第2部分:搜索

当你完成输入文本框和按钮的点击,你将不得不重新定位搜索后的变化元素,并获取其内容,例如,如果它是一个元素,你可能应该在点击按钮后定位元素,然后获取你想要的内容。如果在点击按钮之前将其定位,则该元素中的内容不会自行更改,您需要再次获取该内容。