如何在 Android Studio 的 WebView 中自动填充网站 fields/forms?
How can I autofill a websites fields/forms in a WebView in Android Studio?
我想自动填充例如 Facebook 的登录字段(电子邮件和密码)或 Google 的搜索字段。我已经解决了很多关于自动填充的问题,包括 this.
这是我目前的代码,它在 WebView 中打开网站,但没有填写任何内容。对于 getElementById,我检查了 facebook 的电子邮件和密码字段,他们的 ID 是电子邮件和密码。
webView = (WebView) findViewById(R.id.webView1);
webView.loadUrl("https://www.facebook.com");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
String user = "udb";
String pwd = "abcdefg";
view.loadUrl("javascript:document.getElementById('email').value = '" + user + "';document.getElementById('pass').value='" + pwd + "';");
System.out.println("AUTOFILL");
}
});
它给了我这个错误
I/chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'value' of null", source: (1)
虽然我对javaScript了解不多。
好吧,我仍然无法让 Facebook 工作,但我 google 可以登录工作,还有一些其他网站 register/sign ins。所以基本上你需要检查网站的元素(通过在桌面上使用 google chrome)然后获取元素 id;
这是填写form/field:
的代码
webView.loadUrl("javascript:(function() { document.getElementById('last_name').value = '" + lName + "'; ;})()");
这是单击按钮的代码:
webView.loadUrl("javascript:(function() { var z = document.getElementById('signInButton').click(); })()");
哦,我用我的 phone 来做这个,因为使用模拟器它什么也没做。
编辑:我实际上通过检查 mobile.facebook.com 网站让 facebook 有点工作,但是没有电子邮件 ID,只有密码和登录按钮和其他一些元素。
我想自动填充例如 Facebook 的登录字段(电子邮件和密码)或 Google 的搜索字段。我已经解决了很多关于自动填充的问题,包括 this.
这是我目前的代码,它在 WebView 中打开网站,但没有填写任何内容。对于 getElementById,我检查了 facebook 的电子邮件和密码字段,他们的 ID 是电子邮件和密码。
webView = (WebView) findViewById(R.id.webView1);
webView.loadUrl("https://www.facebook.com");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
String user = "udb";
String pwd = "abcdefg";
view.loadUrl("javascript:document.getElementById('email').value = '" + user + "';document.getElementById('pass').value='" + pwd + "';");
System.out.println("AUTOFILL");
}
});
它给了我这个错误
I/chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'value' of null", source: (1)
虽然我对javaScript了解不多。
好吧,我仍然无法让 Facebook 工作,但我 google 可以登录工作,还有一些其他网站 register/sign ins。所以基本上你需要检查网站的元素(通过在桌面上使用 google chrome)然后获取元素 id;
这是填写form/field:
的代码 webView.loadUrl("javascript:(function() { document.getElementById('last_name').value = '" + lName + "'; ;})()");
这是单击按钮的代码:
webView.loadUrl("javascript:(function() { var z = document.getElementById('signInButton').click(); })()");
哦,我用我的 phone 来做这个,因为使用模拟器它什么也没做。
编辑:我实际上通过检查 mobile.facebook.com 网站让 facebook 有点工作,但是没有电子邮件 ID,只有密码和登录按钮和其他一些元素。