公司要求做一个从银行自动获取到余额和交易情况的系统,使用的是民生银行.
但民生银行在登录页的密码框是 使用的是
<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");
}
}