如何在 webview 中自动填写表单的字段?
How to automatically fill the fields of a form in a webview?
基本上,我想填写贝宝登记表上的一个字段。
这是我的代码:
final String paypal_url = "https://www.paypal.com/welcome/signup/#/email_password";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fillField();
}
private void fillField() {
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(paypal_url);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:document.getElementById('paypalAccountData_firstName').value = 'test';");
}
});
}
这是结果:它加载页面然后显示:
我已经尝试了这个网站上几乎所有的解决方案,但都没有成功(该字段未填写)。
您需要等待整个网页加载,包括其内容 (id="paypalAccountData_firstName"
)
所以你应该改变
view.loadUrl("javascript:document.getElementById('paypalAccountData_firstName').value = 'test';");
至
view.loadUrl( "javascript:window.onload= (function(){ document.getElementById('paypalAccountData_firstName').value = 'test';})();");
所以,问题是 Paypal 的重定向。保罗发布的代码有效,但前提是它加载了美国版的网站。
变化:
final String paypal_url = "https://www.paypal.com/us/signup/account";
和
view.loadUrl( "javascript:window.onload= (function(){ document.getElementById('paypalAccountData_firstName').value = 'test';})();");
基本上,我想填写贝宝登记表上的一个字段。 这是我的代码:
final String paypal_url = "https://www.paypal.com/welcome/signup/#/email_password";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fillField();
}
private void fillField() {
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(paypal_url);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:document.getElementById('paypalAccountData_firstName').value = 'test';");
}
});
}
这是结果:它加载页面然后显示:
我已经尝试了这个网站上几乎所有的解决方案,但都没有成功(该字段未填写)。
您需要等待整个网页加载,包括其内容 (id="paypalAccountData_firstName"
)
所以你应该改变
view.loadUrl("javascript:document.getElementById('paypalAccountData_firstName').value = 'test';");
至
view.loadUrl( "javascript:window.onload= (function(){ document.getElementById('paypalAccountData_firstName').value = 'test';})();");
所以,问题是 Paypal 的重定向。保罗发布的代码有效,但前提是它加载了美国版的网站。 变化:
final String paypal_url = "https://www.paypal.com/us/signup/account";
和
view.loadUrl( "javascript:window.onload= (function(){ document.getElementById('paypalAccountData_firstName').value = 'test';})();");