2016-07-25 20 views
0

Ich versuche, auf eine Schaltfläche in HtmlUnit klicken, um sich auf einer Website (m.pge.com) anzumelden, aber es funktioniert nicht. Der Browser bleibt auf derselben Seite. Ich hatte ähnliches Problem mit einer anderen Seite. Ich habe versucht zu suchen, bekam aber keine definitive Antwort. Irgendwelche Ideen, was ich falsch machen könnte?HtmlUnit Button klicken nicht senden

Hier Code ..

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(); 

Antwort

0

Es ist zu langweilig und unklar Kommentar eingeben, damit ich es als Antwort geben und wird mit dem Fortschritt aktualisieren.

Teil1: Login Die erste Sache ist, dass Sie sicher sind, dass Sie die Schaltfläche richtig anzielen und wo haben Sie die HtmlPage Login-Seite initialisiert. Normalerweise, wenn Sie zuweisen

loginpage = button.click(); 

Es wird Ihnen die Login-Seite, aber manchmal ist es seltsam, dass es keine neue Seite nicht vergeben, sondern die aktuelle Seite ändern. das ist Ihr

Sie können versuchen, es auszudrucken, bevor Sie auf die Schaltfläche klicken und nach der Schaltfläche klicken, um zu sehen, ob sich diese Seite ändert? das heißt

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

Teil2: Suchen

Bei der Eingabe Textbox und Button-Klick getan haben, werden Sie die Änderungen Element nach Suchziel müssen wieder und seinen Inhalt erhalten, zum Beispiel, wenn es ein Element ist sollten Sie das Element nach einem Klick auswählen und den gewünschten Inhalt erhalten. Wenn Sie das Ziel vor dem Klicken auf die Schaltfläche auswählen, ändert sich der Inhalt dieses Elements nicht selbst. Sie müssen dies erneut tun.