2015-08-11 4 views
-1

Я пытаюсь войти на account.mojang.com/login через HtmlUnit. Я не мог найти форму для входа в систему, поэтому я зацикливал все формы на странице, и если бы у них была кнопка входа в систему, это заработало бы все. Как я могу получить форму, которую я ищу? (Вот код, он не работает, хотя.)HtmlUnit - Как получить правильную форму?

@SuppressWarnings("resource") 
public static void nk(){ 
    String username = Sniper.username; 
    String email = Sniper.email; 
    String password = Sniper.pass; 
    System.out.println("Sniping!"); 
    final WebClient web = new WebClient(); 
    try{ 
     final HtmlPage page1 = web.getPage("https://account.mojang.com/login"); 
     for(HtmlForm loginForm: page1.getForms()){ 
      if(loginForm.getInputByName("Log in")!=null){ 
       final List<HtmlInput> loginButton = loginForm.getInputsByValue("Log in"); 
       final HtmlTextInput emailEnter = loginForm.getInputByName("E-mail"); 
       emailEnter.setValueAttribute(email); 
       final HtmlTextInput passbutton = loginForm.getInputByName("Password"); 
       passbutton.setValueAttribute(password); 
       final HtmlPage page2 = loginButton.get(0).click(); 
       System.out.println(page2); 
       changeUsername1(page2.getAnchorByText("Change").click(), username, password); 
      }} 
     }catch(Exception e){ 
      e.printStackTrace(); 
      sniped = true; 
     } 
    } 
    @SuppressWarnings({ "resource", "unused" }) 
    public static void changeUsername1(Page page1,String username, String password){ 
     final WebClient web = new WebClient(); 
     try{ 
      final HtmlPage page = web.getPage(page1.getUrl()); 
      for(HtmlForm form :page.getForms()){ 
       if(form.getInputsByValue("Change name")!=null){ 
        final List<HtmlInput> button = form.getInputsByValue("Change name"); 
        final HtmlTextInput textField = form.getInputByName("New profile name"); 
        textField.setValueAttribute(username); 
        final HtmlTextInput textField1 = form.getInputByName("Password"); 
        textField1.setValueAttribute(password); 
        final HtmlPage page2 = button.get(0).click(); 
        form.getButtonByName("Yes").click(); 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
      sniped = true; 
     } 
     sniped = true; 
    } 

ответ

1

Какой браузер вы используете? Используйте Firebug или один из таких инструментов для поиска формы. Ниже приведена форма на этой странице - поиск осуществляется с помощью инструмента проверки Safari.

<form action="/login" method="post" accept-charset="utf-8" enctype="application/x-www-form-urlencoded" id="loginForm"><input type="hidden" name="authenticityToken" value="60e3d81d00a7ed6e8cb192c52fcddfb9bdfe322d">

+0

Я использую Chrome и тестирование его сейчас. :) Благодаря! – InfIV

+0

Я использовал имя, которое вы сказали, но получил эту ошибку: com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName = [form] attributeName = [name] attributeValue = [authenticityToken] at com.gargoylesoftware.htmlunit.html.HtmlPage.getFormByName (HtmlPage.java:638) у меня.InfIV.Sniper.Stuff.nk (Stuff.java:38) у меня.InfIV.Sniper.Sniper.setStuff (Sniper.java:54) у меня.InfIV.Sniper. Sniper.main (Sniper.java:42) Строка 38 окончательна HtmlForm loginForm = page1.getFormByName ("authenticityToken"); Я не знаю, почему это происходит – InfIV

+0

Используйте 'getElementById ('loginForm')' и отсылайте его в 'HTMLForm' – KDM

Смежные вопросы