当前位置: 代码迷 >> C# >> 救命:关于webbrowser 设置文本内容 实现登录有关问题
  详细解决方案

救命:关于webbrowser 设置文本内容 实现登录有关问题

热度:580   发布时间:2016-05-05 04:25:34.0
救命:关于webbrowser 设置文本内容 实现登录问题
本帖最后由 Vming00 于 2014-06-19 12:51:12 编辑
公司要求做一个从银行自动获取到余额和交易情况的系统,使用的是民生银行.

但民生银行在登录页的密码框是 使用的是  
<embed id="_ocx_passwordChar_login" maxlength="20" edittype="0" type="application/x-cmbc-edit" tabindex="2" class="ocx_style" input_1013="authenticateUser()" input_1009="document.getElementById('_vTokenName').focus()" title="CMBCEDIT">
 标签,

使用   tbPassword.SetAttribute("value", "aaa11aaa11"); 这样是没法对此控件进行赋值, 使用 SendKeys.SendWait(letter.ToString()); 模拟键盘事件也不行..

请教各位大神,不知道还有什么好办法不?

民生银行地址:  https://per.cmbc.com.cn/pweb/static/login.html
------解决思路----------------------
以下是我做的网站自动发贴的代码,里面同样有登陆密码的输入,不过据我推测试,银行网站不会轻易让你模拟输入的,因为像金融网站设计是都是考虑了安全问题,用了不能模拟登陆的控件或者后台JS的

HtmlElement username = webBrowser1.Document.GetElementById("ls_username");
HtmlElement userpass = webBrowser1.Document.GetElementById("ls_password");
username.InnerText = txtName.Text.Trim();
userpass.InnerText = txtPass.Text.Trim();
webBrowser1.Document.InvokeScript("lsSubmit");


HtmlElementCollection Time = webBrowser1.Document.GetElementsByTagName("INPUT");
                    foreach (HtmlElement time in Time)
                    {
                        if (time.Name == "enabledate")
                        {
                            if (IsAllWeek)
                            {
                                time.SetAttribute("value",GeneralHelper.GetMondayDate().ToString("yyyy-MM-dd"));
                            }
                            else
                            {
                                time.SetAttribute("value", DateTime.Today.ToString("yyyy-MM-dd"));
                            }
                        }
                        if (time.Name == "expiredate")
                        {
                            if (IsAllWeek)
                            {
                                time.SetAttribute("value",GeneralHelper.GetSundayDate().ToString("yyyy-MM-dd"));
                            }
                            else
                            {
                                time.SetAttribute("value", DateTime.Today.ToString("yyyy-MM-dd"));
                            }

                        }

                        if (time.Name == "Submit")
                        {
                            time.InvokeMember("click");
                        }
                    }
  相关解决方案