0

我想在java中使用htmlunit登录我的雅虎电子邮件,我尝试使用许多不同的方式登录,但似乎都不适合我。这似乎是提交按钮的问题。请帮忙?

代码1:

import java.io.IOException;
import java.net.MalformedURLException;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;

public class AnotherYahoo2 {

    /**
     * @param args
     * @throws IOException 
     * @throws MalformedURLException 
     * @throws FailingHttpStatusCodeException 
     */
    public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
        // TODO Auto-generated method stub
        //---------------------------------Login Page---------------------------------
          WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
        HtmlPage PageLogin = webClient.getPage("https://login.yahoo.com/config/login?");



        HtmlElement submitButton = (HtmlElement) PageLogin.getByXPath("//div[@name='.save']").get(0);
        HtmlTextInput name = (HtmlTextInput) PageLogin.getElementById("username");
        HtmlPasswordInput pass = (HtmlPasswordInput)PageLogin.getElementById("passwd");

            name.setText("xxx@yahoo.com");
            pass.setText("exxx5");

            System.out.println("Logging in to site");
            //------------------------------------------------------------------------

           //---------------------------------Pass varified Page----------------------
            HtmlPage pagePassVarified = submitButton.click();
            System.out.println("Successfully Logged in to site");
            HtmlElement btnContinue = (HtmlElement) pagePassVarified.getElementById(".save");
            //---------------------------------------------------------

            //---------------------Home Page----------------------------------
            HtmlPage pageHome = btnContinue.click();
            System.out.println("Home Page accessed");
            //----------------------------------------------------------------
    }

}

在 com.att 的 java.util.ArrayList.get(Unknown Source) 处的 java.util.ArrayList.RangeCheck(Unknown Source) 处的线程“main”java.lang.IndexOutOfBoundsException 中的输出 1 异常:索引:0,大小:0。 temp.AnotherYahoo2.main(AnotherYahoo2.java:30)

代码#2 ...我也尝试了不同的方式,但它也失败了

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

    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
    webClient.setThrowExceptionOnScriptError(false);
    // Get the first page
    HtmlPage page1 = (HtmlPage) webClient.getPage("https://login.yahoo.com/config/login?");

    // Get the form that we are dealing with and within that form,
    // find the submit button and the field that we want to change.
    HtmlForm form = page1.getFormByName("login_form");

    // Enter login and passwd
    form.getInputByName("login").setValueAttribute("yovan_05@yahoo.com");
    form.getInputByName("passwd").setValueAttribute("escobar05");

    // Click "Sign In" button/link
    page1 = (HtmlPage) form.getInputByValue("submit").click();

    // I added the cookie section but this returns a null pointer exception    
    Set<Cookie> cookie = webClient.getCookieManager().getCookies();

    if(cookie != null){

        Iterator<Cookie> i = cookie.iterator();

        while (i.hasNext()) {

        webClient.getCookieManager().addCookie(i.next());
        }
    }
    //  Get page as Html
    String htmlBody = page1.getWebResponse().getContentAsString();
    //  Save the response in a file
    String filePath = "c://temp//test_out.html";

    BufferedWriter bw = new BufferedWriter(new FileWriter(new File(filePath)));
    bw.write(htmlBody);
    bw.close();

    webClient.closeAllWindows();
    }

输出 2

Exception in thread "main" com.gargoylesoftware.htmlunit.ElementNotFoundException:     elementName=[input] attributeName=[value] attributeValue=[submit]
at com.gargoylesoftware.htmlunit.html.HtmlForm.getInputByValue(HtmlForm.java:794)
at com.att.temp.AnotherYahoo.main(AnotherYahoo.java:41)
4

1 回答 1

0

尝试以下操作:

HtmlButton htmlButton = page.getFirstByXPath("//*[@id=\".save\"]") ;
htmlButton.click();
于 2013-12-17T23:41:35.240 回答