我正在尝试使用JavaScript以编程方式登录网站。这是登录表单的HTML代码。
<form action="https://www.example.com/login/index.php" method="post" id="login" autocomplete="off" >
<div class="loginform">
<div class="form-label"><label for="username">Username</label></div>
<div class="form-input">
<input type="text" name="username" id="username" size="15" value="" />
</div>
<div class="form-label"><label for="password">Password</label></div>
<div class="form-input">
<input type="password" name="password" id="password" size="15" value="" autocomplete="off" />
<input type="submit" id="loginbtn" value="Login" />
</div>
</div>
我尝试在Android应用程序中使用webview登录网站。我使用
webView.loadUrl("http://www.example.com/info");
webView.setVisibility(View.INVISIBLE);
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript: {" +
"document.getElementById('username').value = '"+user+"';" +
"document.getElementById('password').value = '"+pass+"';" +
"document.getElementById('loginbtn').click();" +
"};");
}
public void onPageFinished2(WebView view, String url) {
webView.loadUrl(url);
}
});
webView.setVisibility(View.VISIBLE);
webView.clearCache(true);
webView.clearHistory();
}
但是webview只在输入字段中显示了uesrname和密码。没有按钮点击发生。我的代码出了什么问题?
答案 0 :(得分:1)
按如下方式更改您的代码
webView.loadUrl("http://www.example.com/info");
webView.setVisibility(View.INVISIBLE);
//add following two lines
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript: {" +
"document.getElementById('username').value = '"+user+"';" +
"document.getElementById('password').value = '"+pass+"';" +
"document.getElementById('loginbtn').click();" +
"};");
}
public void onPageFinished2(WebView view, String url) {
webView.loadUrl(url);
}
});
webView.setVisibility(View.VISIBLE);
webView.clearCache(true);
webView.clearHistory();
}
您可以从this link.
了解更多信息答案 1 :(得分:0)
这是因为......
document.getElementByName('loginbtn').onclick();
应该是这个......
document.getElementByName('loginbtn').click();
javascript中的onclick
对象中没有此类HTMLElementObject
方法,您尝试调用的方法是click
。这是W3Schools
答案 2 :(得分:0)
document.getElementByName('loginbtn').click();
为我工作。问题是我在WebViewClient类中重写了public boolean shouldOverrideUrlLoading(WebView view, String url)
方法。
我删除了那部分后,效果非常好。