如何在 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';})();");