Java 如何在webview中自动填充表单的字段?

Java 如何在webview中自动填充表单的字段?,java,android,webview,android-webview,Java,Android,Webview,Android Webview,基本上,我想在paypal注册表上填写一个字段。 这是我的密码: final String paypal_url = "https://www.paypal.com/welcome/signup/#/email_password"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a

基本上,我想在paypal注册表上填写一个字段。 这是我的密码:

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\u firstName 所以你应该改变

view.loadUrl("javascript:document.getElementById('paypalAccountData_firstName').value = 'test';");


所以,问题是贝宝的重定向。Paul发布的代码有效,但只有在加载了该网站的美国版本时才有效。 变化:


这是行不通的。它显示页面而不填充字段。是否要自动填充此标记paypalAccountData\u firstName,对吗?由于我的国家/地区的原因,我遇到了此页面的重定向,因此我不确定页面中存在什么类名是。什么重定向?使用我发布的代码,如果我用另一个随机字符串obv更改id paypalAccountData_firstName,而不是另一个id,它将显示页面而不填充字段,因此只有使用正确的id名称,它才会执行某些操作,即使它不是我想要的。所以我认为问题不在于身份。好吧,我发现了问题。非常感谢你的帮助。
view.loadUrl( "javascript:window.onload= (function(){ document.getElementById('paypalAccountData_firstName').value = 'test';})();");
final String paypal_url = "https://www.paypal.com/us/signup/account";
view.loadUrl( "javascript:window.onload= (function(){ document.getElementById('paypalAccountData_firstName').value = 'test';})();");