读书人

IE自动登录有关问题

发布时间: 2013-11-19 22:55:29 作者: rapoo

IE自动登录问题
我用Delphi的
if SUCCEEDED(spDisp.QueryInterface(IHTMLInputElement,aInputText)) and (aInputText.name='username') then
aInputText.value='username1'

这种方式可以实现一些网站的用户名/密码赋值及自动登录,但是某个网站却怎么也实现不了,主要是用户名与密码的输入框没有name属性,只有一个class="Inputbox Username"这样的,网站的代码如下:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>登录</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link href="Loginpage.css" rel="stylesheet" type="text/css"/>
<script src="../main/js/jquery-1.7.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {

$(".inputname").focus(
function () {
$(".username_tip").hide();
}
);
$(".inputname").blur(
function () {
if ($(".inputname").val().length <= 0)$(".username_tip").show();
}
);
$(".username_tip").click(
function () {
$(".username_tip").hide();
$(".inputname").focus();
}
);

$('input.btnLogin').bind('click', Login);

document.onkeydown = function (e) {
var theEvent = window.event || e;
var code = theEvent.keyCode || theEvent.which;
if (code == 13) {
Login();
return false;
}

}

var loac = window.location;
var origin = '';
if (loac.origin) {
origin = loac.origin;
} else {
origin = loac.protocol + '//' + loac.host;
}

function Login() {
$(".loginmsg").html('');
//TODO: 配置登陆地址
$.post(origin + "/userMapper/mapping",
{


login: $(".inputname").val(),
password: $(".inputpass").val()
},
function (data1, status) {
if (!data1 || !data1.success) {
//登陆失败
$(".loginmsg").html(data1.message || '');
}
else {
var $form = $('form.InputForm');

$form.attr('action', 'http://10.*.*.*:9090/businesspublisher/login.do');
$form.attr('method', "POST");

//$('#ok').unbind('click',onSubmitClick);
$("#login_id").val(data1.user);
$("#password_id").val(data1.password);
$("#userId").val(data1.userId);
$("#userName").val(data1.userName);
$('#oksubmit').click();
}
});

}
});
</script>
</head>
<body>
<div class="MainDiv">
<div class="InputFloat">
<div id="Logo" class="Logo">
</div>

<div class="SysName">
<div class="SysNameTxt">
**集团公司**管理系统</h1>
</div>

</div>
<div class="InputDiv">
<form class="InputForm">
<div class="formlogin" style="display: none">
<input id="login_id" name="login"/>
<input id="userId" name="userId"/>


<input id="userName" name="userName"/>
<input id="password_id" name="password" type="password"/>
<input id="oksubmit" type="submit"/>
</div>
<div class="InputLeft">
<input class="btnLogin" type="button" value="登录" />
</div>
<div class="InputRight">
<div class="loginname">
<div class="input_lbl">用户名</div>
<div class="inputboxdiv">
<input class="inputbox inputname" type="text"></input>
<span class="username_tip" style="">请输入用户名</span>
</div>
</div>
<div class="passwd">
<div class="input_lbl">密 码</div>
<div class="inputboxdiv"><input class="inputbox inputpass" type="password"></input></div>
</div>
</div>
</form>
<div class="loginmsg">
</div>
</div>
</div>
</div>
</body>
</html>


麻烦熟悉html的朋友指点一下,谢谢! html?
[解决办法]
没有name属性,可以用遍历网页的方式得到对象,然后再控制。
[解决办法]
这么简单的道理,没有名字就遍历啊,又要问如何遍历,直接上代码吧:

procedure test(doc : IHTMLDocument2);
var
allcs : IHTMLElementCollection;
elm : IHTMLElement;
i : Integer;
tag,cls : string;
begin
allcs := doc.all;
for i:=0 to allcs.length-1 do
begin
elm := allcs.item(i,0) as IHTMLElement;
tag := elm.tagName;
if tag='INPUT' then
begin
cls := elm.className;
if cls='inputbox inputname' then
begin
(elm as IHTMLInputTextElement).value := 'xxxx';
end;
end;


end;
end;

读书人网 >.NET

热点推荐