2011-02-02 15 views
9

Estoy tratando de usar HtmlUnit en Java para iniciar sesión en un sitio web. Primero ingreso el nombre de usuario y luego la contraseña. Después de eso, tengo que seleccionar una opción de un cuadro desplegable. Al ingresar el usuario y la contraseña parecían haber funcionado, pero cuando intento seleccionar el ítem del menú desplegable, obtengo errores. ¿Alguien puede ayudarme a arreglar esto? Mi código es el siguiente:¿Cómo usar HtmlUnit en Java?

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

nos dice exactamente qué errores se obtiene sería muy útil. – MatrixFrog

Respuesta

3

Aquí está el código de la unidad de pruebas para 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")); 

Tenga en cuenta que utilizan getSelectsByName not getElementById.

Aquí hay un enlace a esas pruebas unitarias para que pueda ver cómo prescriben utilizando la API. http://htmlunit.sourceforge.net/xref-test/com/gargoylesoftware/htmlunit/html/HtmlSelectTest.html

3

Obtenga la forma del nombre de usuario y la contraseña de inicio de sesión.

aquí es un ejemplo:

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