公司要求做一个从银行自动获取到余额和交易情况的系统,使用的是民生银行.
但民生银行在登录页的密码框是 使用的是
但民生银行在登录页的密码框是 使用的是
<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
解决方案:50分
以下是本人做的网站自动发贴的代码,里面同样有登陆密码的输入,不过据本人推测试,银行网站不会轻易让你模拟输入的,原因是像金融网站设计是都是考虑了安全问题,用了不能模拟登陆的控件或后台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"); } }