2011-06-12 93 views
2

嗨,我想以编程方式填写登录表单,并调用点击按钮登录一些网站。以编程方式在网站上登录

我试着去实现这个像在这个片段:

public class LoginActivity extends Activity { 
WebView mWebView; 
Button btn; 
EditText txtLogin; 
EditText txtPassword; 
WebView webview; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    btn = (Button)this.findViewById(R.id.button1); 
    txtLogin = (EditText)this.findViewById(R.id.txtLogin); 
    txtPassword = (EditText)this.findViewById(R.id.txtPassword); 
    webview = (WebView)findViewById(R.id.webView1); 
    webview.setWebViewClient(new WebClient()); 
    webview.getSettings().setJavaScriptEnabled(true); 
    btn.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View v) 
     { 

      OpenWebContent(); 
     } 
    });   

} 
public void OpenWebContent() 
{ 
    webview.loadUrl("http://www.www.com");   
} 

public class WebClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) 
    {  

       view.loadUrl("javascript:(function() { " + 
        "document.getElementsByTagName('user').value = " + "'mylogin'" + ";" + 
       "document.getElementsByTagName('password').value = " + "'mypassword'" + ";" + 
       "document.getElementsByTagName('input')[4].click(); " + 
       "})()"); 

    } 
} 

偏偏以上未使用的代码。我有没有遗漏什么? 感谢您的任何建议。

+0

您可能会发现它有用解释什么是“不工作”的意思。 – CommonsWare 2011-06-12 20:01:28

+0

@CommonsWare。它看起来像我的任何JavaScript代码没有解雇。即使我只是“提醒('测试')”在该js片段没有出现... – movax 2011-06-13 05:18:02

回答

2

首先 - 不是所有的JavaScript方法都支持(尽管我找不到支持和不支持的列表)。

在这种情况下,我认为你应该遵循这个easy example.