基本上,我想在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';");
}
});
}
这是结果:它加载页面,然后显示此:
我已经在该站点上尝试了几乎所有解决方案,但都没有成功(该字段没有填写)。
答案 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';})();");