如何使用mechanize在嵌套框架/表单中导航并输入内容
我想在一个有框架的页面里输入一些文字(比如登录名和密码)。这个页面的结构大概是这样的:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>Whatever</head>
<body id="Body">
<form id="frmM" onsubmit="javascript:return whatever();" action="Login.aspx" method="post">
<div id="alldata">
<div id="header">
<iframe id="Login_SSL" scrolling="no" frameborder="1" src="https://www.whatever.com/User/LoginFrame.aspx?redir=/User/Login.aspx">
<html xmlns="http://www.w3.org/1999/xhtml">
<body onload="refreshParent()">
<form id="form1" action="LoginFrame.aspx?redir=%2fUser%2fLogin.aspx" method="post">
<div id="loginRow" class="loginMenuRow" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'cmdLogin')">
<input id="cmdLogin" type="submit" tabindex="3" onclick="aspnetForm.target ='_top';" value="Login" name="cmdLogin">
<input id="Password" class="textbox" type="password" tabindex="2" name="Password">
<span id="lblPassword" class="loginMenu">Password:</span>
</div>
</form>
</body>
</html>
</iframe>
</div>
</div>
</form>
</body>
</html>
如果我试着去找那个表单,我发现只有最上面的那个表单可以用。
>>br.select_form("form1")
FormNotFoundError: no form matching name 'form1'
>>[f.attrs['id'] for f in br.forms()]
['frmM']
那我该怎么在这个网站上登录呢?
1 个回答
4
有两种选择:
直接在iframe里面访问网址,然后进行表单登录。
在浏览器中登录这个网站,然后使用像Firebug这样的扩展工具来跟踪发送的数据。接着,复制这个请求来实现自动登录。