2011-02-02 9 views
9

Próbuję użyć HtmlUnit w Javie, aby zalogować się na stronie internetowej. Najpierw wpisuję nazwę użytkownika, a następnie hasło. Później muszę wybrać opcję z rozwijanego okna. wprowadzenie hasła i użytkownika wydawało się działać, ale gdy próbuję wybrać element z rozwijanego menu, pojawiają się błędy. Czy ktoś może mi pomóc to naprawić? Mój kod jest następujący:Jak korzystać z HtmlUnit w Javie?

import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlElement; 
import com.gargoylesoftware.htmlunit.html.HtmlOption; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.html.HtmlSelect; 


public class homePage { 
    public static void main(String[] args) throws Exception { 

    final WebClient webClient = new WebClient(); 
    final HtmlPage page = webClient.getPage("website name here"); 
    HtmlElement usrname = page.getElementByName("username"); 
    usrname.click(); 
    usrname.type("myusername"); 
    HtmlElement psswrd = page.getElementByName("password"); 
    psswrd.click(); 
    psswrd.type("mypassword"); 
    HtmlSelect select = (HtmlSelect) page.getElementById("cmbProducts"); 
    HtmlOption option = select.getOptionByValue("ITDirect"); 
    select.setSelectedAttribute(option, true); 
    HtmlElement signin = page.getElementByName("SignIn"); 
    signin.click(); 
    System.out.println(page.getTitleText()); 
    webClient.closeAllWindows(); 
    } 
} 
+4

podano nam dokładnie, jakie błędy można dostać byłoby bardzo pomocne. – MatrixFrog

Odpowiedz

3

Oto kod z testów jednostkowych dla HTMLunit.

final HtmlSelect select = form.getSelectsByName("select1").get(0); 
final List<HtmlOption> expected = new ArrayList<HtmlOption>(); 
expected.add(select.getOptionByValue("option1")); 
expected.add(select.getOptionByValue("option3")); 

Należy zauważyć, że używają getSelectsByName nie pobierają ElemById.

Oto link do tych testów jednostkowych, dzięki czemu można zobaczyć, jak przepisywać za pomocą interfejsu API. http://htmlunit.sourceforge.net/xref-test/com/gargoylesoftware/htmlunit/html/HtmlSelectTest.html

3

Uzyskaj postać nazwy użytkownika i hasła.

Oto przykład:

HtmlPage page3; 
    page3 = webClient.getPage("Website"); 
    HtmlForm loginForm = page3.getFormByName("loginForm"); 
    HtmlTextInput username = loginForm.getInputByName("NameofUsernameElement"); 
    HtmlPasswordInput pass = loginForm.getInputByName("NameofPassowordElement"); 
    HtmlSubmitInput b = loginForm.getInputByValue("LoginButtonValue"); 

    username.setValueAttribute("Actualy Username"); 
    pass.setValueAttribute("Actual Password"); 
    HtmlPage page2; 
    page2 = b.click();