2016-07-25 7 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

それはので、私は答えとして、それを入力し、進捗状況を更新するコメントを入力するにはあまりにも退屈では不明です。

パート1:ログイン 最初に、ボタンを正しくターゲットにしていることと、HtmlPageのログインページをどこで初期化したかを確認してください。通常、あなたが

loginpage = button.click(); 

を割り当てるときにそれはあなたのログインページを取得しますが、時には新しいページを割り当てるのではなく、現在のページを変更しないこと奇妙です。あなたは

page 

ボタンをクリックする前に印刷してみてください。それはパート2

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

です:あなたが入力テキストボックスとボタンのクリックを行っている検索

、あなたはそれが要素である場合、例えば、再検索後の変更要素をターゲットし、そのコンテンツを取得する必要がありますボタンをクリックした後に要素をターゲットにし、後で必要なコンテンツを取得する必要があります。ボタンをクリックする前にターゲットを設定すると、その要素のコンテンツは変更されず、再度取得する必要があります。

関連する問題