如何自动填充Web视图中表单的字段?

时间:2018-08-05 09:59:18

标签: 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.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';");

        }

    });

}

这是结果:它加载页面,然后显示此:

this

我已经在该站点上尝试了几乎所有解决方案,但都没有成功(该字段没有填写)。

2 个答案:

答案 0 :(得分:1)

因此,问题出在Paypal的重定向。 Paul发布的代码有效,但前提是已加载该网站的美国版本。 更改:

List<Employee> list = new ArrayList<>();
for (String line : lines) {
    String[] tokens = line.split(";");
    list.add(new Employee(tokens[0], tokens[1]));
}

final String paypal_url = "https://www.paypal.com/us/signup/account";

答案 1 :(得分:0)

您需要等待整个网页加载,包括其内容(id="paypalAccountData_firstName") 所以你应该改变

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

view.loadUrl( "javascript:window.onload= (function(){ document.getElementById('paypalAccountData_firstName').value = 'test';})();");