我正在尝试与网站“同步”互动(单击提交按钮时发生的JavaScript事件),以获取textField值。此textField首先不存在。当用户单击HTML表单中的“提交”按钮时生成(实际上有2个按钮:第一个: Id =“ ColumnLeft_ADD_BTN_ID” ,第二个: Id =“ ColumnLeft_GET_BTN_ID” )。 当我使用Javascript模拟点击时,textField不会出现。我收到此错误“未捕获的TypeError:无法读取null的属性'值'”,因为textField不存在。
我已经尝试了HTMLUnit,但是无法使其与Android一起使用。我转向Android WebView。 这是我的代码:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(url);
final String js = "(function() { " +
"document.getElementById('ColumnLeft_RES_TB_ID').value='" + group + "';" +
"document.getElementById('ColumnLeft_ADD_BTN_ID').click();" +
"document.getElementById('ColumnLeft_GET_BTN_ID').click();" +
"return document.getElementById('ColumnLeft_FEED_URL_TB_ID').value; " +
"})();";
mWebView.setWebViewClient(new WebViewClient(){
public void onPageFinished(WebView view, String url){
if(Build.VERSION.SDK_INT >= 19){
view.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
JsonReader reader = new JsonReader(new StringReader(s));
// Must set lenient to parse single values
reader.setLenient(true);
try {
if(reader.peek() != JsonToken.NULL) {
if(reader.peek() == JsonToken.STRING) {
String msg = reader.nextString();
Log.d("DEBUG", "msg : " + msg);
}
}
} catch (IOException e) {
Log.e("TAG", "MainActivity: IOException", e);
} finally {
try {
reader.close();
} catch (IOException e) {
// NOOP
}
}
}
});
}
}
});