有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

身份验证需要帮助使用java中的Htmlunit登录我的雅虎邮件帐户

我需要帮助尝试登录我的雅虎电子邮件,在java中使用Htmlunit。我经常出错,我对它真的很陌生。我听说这是最好的屏幕抓取工具,为了抓取屏幕,我需要登录我的内部网,但我正在练习使用我的雅虎邮件。请帮忙

import java.net.*;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.*;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class HtmlDelete {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    HtmlDelete main = new HtmlDelete();
    try {
        main.submittingForm();
    } catch (Exception ex) {
        Logger.getLogger(HtmlDelete.class.getName()).log(Level.SEVERE, null, ex);       }
    }

    public void submittingForm() throws Exception {
    final WebClient webClient = new WebClient();
    //webClient.setJavaScriptEnabled(false);
    // Get the first page
    final HtmlPage page1 = webClient.getPage("https://login.yahoo.com/config/login_verify2?.intl=us&.src=ym");

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

    //final HtmlSubmitInput button = form.getInputByName("subbtn");
    final HtmlSubmitInput button = page1.getHtmlElementById(".save");
    final HtmlTextInput loginName = form.getInputByName("login");
    final HtmlPasswordInput loginPs = form.getInputByName("passwd");

    // Change the value of the text field
    loginName.setValueAttribute("xxxx@yahoo.com");
    loginPs.setValueAttribute("exxxxx5");

    // Now submit the form by clicking the button and get back the second page.
    final HtmlPage page2 = button.click();
    final String pageAsXml = page2.asText();
    System.out.println(pageAsXml);
    //webClient.closeAllWindows();
    }
}

输出

    Jun 19, 2013 9:31:47 AM com.att.temp.HtmlDelete main
    SEVERE: null
    ======= EXCEPTION START ========
    Exception class=[net.sourceforge.htmlunit.corejs.javascript.WrappedException]
    com.gargoylesoftware.htmlunit.ScriptException: Wrapped com.gargoylesoftware.htmlunit.ScriptException: Wrapped com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot call method "one" of null (https://s.yimg.com/lq/lib/yui-ssl/3.4.1/build/yui/yui-min.js#8)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:669)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:601)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:576)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:1005)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:208)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:228)
        at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:813)
        at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:737)
        at com.gargoylesoftware.htmlunit.html.HtmlElement$1.run(HtmlElement.java:867)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
        at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:872)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1268)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:237)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:441)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:309)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:374)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:359)
        at com.att.temp.HtmlDelete.submittingForm(HtmlDelete.java:34)
        at com.att.temp.HtmlDelete.main(HtmlDelete.java:24)

    Inside wrapped exception:
    ======= EXCEPTION START ========
    Exception class=[net.sourceforge.htmlunit.corejs.javascript.WrappedException]
    com.gargoylesoftware.htmlunit.ScriptException: Wrapped com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot call method "one" of null (https://s.yimg.com/lq/lib/yui-ssl/3.4.1/build/yui/yui-min.js#8)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:669)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:601)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:576)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:1005)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:208)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeListeners(EventListenersContainer.java:293)
        at com.gargoylesoftware.htmlunit.javascript.host.Window.executeEvent(Window.java:1975)
        at com.gargoylesoftware.htmlunit.javascript.host.Node.executeEvent(Node.java:725)
        at com.gargoylesoftware.htmlunit.html.HtmlScript.setAndExecuteReadyState(HtmlScript.java:535)
        at com.gargoylesoftware.htmlunit.html.HtmlScript$3.execute(HtmlScript.java:261)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:714)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$500(JavaScriptEngine.java:91)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:664)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:601)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:576)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:1005)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:208)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:228)
        at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:813)
        at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:737)
        at com.gargoylesoftware.htmlunit.html.HtmlElement$1.run(HtmlElement.java:867)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
        at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:872)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1268)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:237)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:441)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:309)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:374)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:359)
        at com.att.temp.HtmlDelete.submittingForm(HtmlDelete.java:34)
        at com.att.temp.HtmlDelete.main(HtmlDelete.java:24)

    ======= EXCEPTION START ========
    Exception class=[net.sourceforge.htmlunit.corejs.javascript.JavaScriptException]
    com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot call method "one" of null (https://s.yimg.com/lq/lib/yui-ssl/3.4.1/build/yui/yui-min.js#8)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:669)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:555)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.loadExternalJavaScriptFile(HtmlPage.java:1082)
        at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:399)
        at com.gargoylesoftware.htmlunit.html.HtmlScript$3.execute(HtmlScript.java:260)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:714)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$500(JavaScriptEngine.java:91)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:664)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:601)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:576)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:1005)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:208)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeListeners(EventListenersContainer.java:293)
        at com.gargoylesoftware.htmlunit.javascript.host.Window.executeEvent(Window.java:1975)
        at com.gargoylesoftware.htmlunit.javascript.host.Node.executeEvent(Node.java:725)
        at com.gargoylesoftware.htmlunit.html.HtmlScript.setAndExecuteReadyState(HtmlScript.java:535)
        at com.gargoylesoftware.htmlunit.html.HtmlScript$3.execute(HtmlScript.java:261)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:714)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$500(JavaScriptEngine.java:91)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:664)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:601)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:576)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:1005)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:208)
        at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:228)
        at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:813)
        at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:737)
        at com.gargoylesoftware.htmlunit.html.HtmlElement$1.run(HtmlElement.java:867)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:601)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
        at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:872)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1268)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:237)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:441)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:309)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:374)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:359)
        at com.att.temp.HtmlDelete.submittingForm(HtmlDelete.java:34)
        at com.att.temp.HtmlDelete.main(HtmlDelete.java:24)
    Caused by: net.sourceforge.htmlunit.corejs.javascript.JavaScriptException: TypeError: Cannot call method "one" of null (https://s.yimg.com/lq/lib/yui-ssl/3.4.1/build/yui/yui-min.js#8)
        at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1006)
        at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798)
        at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:405)
        at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:275)
        at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3031)
        at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.exec(InterpretedFunction.java:115)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$3.doRun(JavaScriptEngine.java:546)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:654)
        ... 44 more
    JavaScriptException value = TypeError: Cannot call method "one" of null
    ======= EXCEPTION END ========
    == CALLING JAVASCRIPT ==

      function () {
          if (this.readyState == "loaded" || this.readyState == "complete") {
          loadUHJS();
          }
      }

    ======= EXCEPTION END ========
    == CALLING JAVASCRIPT ==

      function () {
          var seedfile = "https://s.yimg.com/lq/lib/yui-ssl/3.4.1/build/yui/yui-min.js";
          var yui3 = document.createElement("script");
          yui3.type = "text/javascript";
          yui3.id = "seedfile";
          yui3.src = seedfile;
          var head = document.getElementsByTagName("head")[0];
          head.appendChild(yui3);
          yui3.onload = function () {
          loadUHJS();
          };
          yui3.onreadystatechange = function () {
          if (this.readyState == "loaded" || this.readyState == "complete") {
              loadUHJS();
          }
          };
          loadUHJS = function () {
          YUI({combine: true, comboBase: "https://s.yimg.com/lq/combo?", root: "yui-ssl/3.4.1/build/"}).use("node", "event", "event-mouseenter", "substitute", "oop", "node-focusmanager", function (Y) {
          });
          var hdJS = document.createElement("script");
          hdJS.type = "text/javascript";
          hdJS.src = "https://s.yimg.com/zz/combo?kx/ucs/sts/js/442/skip-min.js&kx/ucs/uh/js/279/timestamp_library-min.js&kx/ucs/menu_utils/js/164/menu_utils_v2-min.js&kx/ucs/uh/js/267/aria_toolbar-min.js&kx/ucs/username/js/43/user_menu-min.js&kx/ucs/help/js/41/help_menu-min.js&kx/ucs/utility_link/js/20/utility_menu-min.js&kx/ucs/uh/js/262/logo_debug-min.js";
          head.appendChild(hdJS);
          };
      }

    ======= EXCEPTION END ========

共 (0) 个答案