2016-07-06 5 views
1

Also ich versuche, den Text eines Elements in HtmlUnit zu setzen, aber aus irgendeinem Grund verstehe ich nicht ganz, dass eine NullPointerException ausgelöst wird. Offensichtlich existiert das Element auf der Seite und es wird von htmlunit gefunden! Warum sollte setText einen Fehler verursachen? Irgendwelche Ideen?HtmlUnit .setText() wirft eine Nullzeigerausnahme, aber Element ist nicht null

Code:

String code = "123"; 

HtmlTextInput textElem = (HtmlTextInput)page.getHtmlElementById("gc-redemption-input"); 
System.out.println(textElem); 
textElem.setText(code); 

Ausgang:

HtmlTextInput[<input type="text" required="" id="gc-redemption-input" name="claimCode" class="gc-redemption-input a-input-text a-span12 a-form-selected" autofocus="autofocus" value="">] 

Fehler:

Exception in thread "main" 
java.lang.NullPointerException 
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.hasTopCall(ScriptRuntime.java:3241) 
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:102) 
    at com.gargoylesoftware.htmlunit.javascript.host.dom.MutationObserver.attributeReplaced(MutationObserver.java:165) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireHtmlAttributeReplaced(HtmlElement.java:348) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireHtmlAttributeReplaced(HtmlElement.java:353) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireHtmlAttributeReplaced(HtmlElement.java:353) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireHtmlAttributeReplaced(HtmlElement.java:353) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireHtmlAttributeReplaced(HtmlElement.java:353) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireHtmlAttributeReplaced(HtmlElement.java:353) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireHtmlAttributeReplaced(HtmlElement.java:353) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireHtmlAttributeReplaced(HtmlElement.java:353) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireHtmlAttributeReplaced(HtmlElement.java:353) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.setAttributeNS(HtmlElement.java:209) 
    at com.gargoylesoftware.htmlunit.html.HtmlInput.setAttributeNS(HtmlInput.java:538) 
    at com.gargoylesoftware.htmlunit.html.HtmlTextInput.setAttributeNS(HtmlTextInput.java:164) 
    at com.gargoylesoftware.htmlunit.html.DomElement.setAttribute(DomElement.java:331) 
    at com.gargoylesoftware.htmlunit.html.HtmlInput.setValueAttribute(HtmlInput.java:94) 
    at com.gargoylesoftware.htmlunit.html.HtmlTextInput.setText(HtmlTextInput.java:124) 
+1

Dies sollte jetzt behoben werden. Siehe [Htmlunit-Nullzeiger beim Füllen der Eingabe, aber das Element ist nicht nulled] (http://stackoverflow.com/questions/41839518/htmlunit-null-pointer-on-filling-input-but-element-is-not-nulled) – RBRi

Antwort

1

Das Problem String code = '123'; sein könnte, weil es die folgenden Fehler in meiner IDE zeigt: Unclosed character literal. Versuchen Sie stattdessen doppelte Anführungszeichen: String code = "123";.

+1

Danke für den guten Fang! Leider ist das nicht das Problem, es war eine Zeile, die ich nicht kopiert und stattdessen getippt habe :) – k9b