2016-07-25 175 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部分:搜索

當你完成輸入文本框和按鈕的點擊,你將不得不重新定位搜索後的變化元素,並獲取其內容,例如,如果它是一個元素,你可能應該在點擊按鈕後定位元素,然後獲取你想要的內容。如果在點擊按鈕之前將其定位,則該元素中的內容不會自行更改,您需要再次獲取該內容。