我正在使用机械化,并试图提交一个Web表单以自动化专用网络上的电源控制外围设备。但是,我无法从文档中弄清楚该如何做。这是我的图片形式,因为我将其放在下面的url变量中。
url = "http://192.168.0.1/remsw1.htm"
br = mechanize.Browser()
br.set_handle_robots(False) # ignore robots
br.open(url)
br._factory.is_html = True
forms = list(br.forms())
form = forms[0]
print form
br.select_form(nr=0)
br['tp'] = [0, 1]
br.submit()
我的控制台显示:
<get http://192.168.0.1/uswrem.cgi application/x-www-form-urlencoded
<RadioControl(tp=[*1, 0])>
<CheckboxControl(osw=[1, 2, 3, 4, 5, 6, 7, 8])>
<SubmitControl(sbt=Apply) (readonly)>
<IgnoreControl(<None>=<None>)>>
这是该页面的整个html:
<html>
<head>
<link rel="stylesheet" type="text/css" href="ymon.css">
<title>swcontrol</title>
</head>
<body>
Outlet Control
<hr>
<p></p>
<form action="uswrem.cgi" method="get">
<table border="1" cellspacing="1" align="center" width="60%">
<tbody>
<tr>
<td colspan="2"> Action Type: <input type="radio" name="tp" value="1" checked="">Delayed <input type="radio" name="tp" value="0">Immediately</td>
</tr>
<tr>
<td width="25%"><input type="checkbox" name="osw" value="1"></td>
<td width="75%" class="chl"> Turn On Outlet # 1</td>
</tr>
<tr>
<td><input type="checkbox" name="osw" value="2"></td>
<td class="chl"> Turn On Outlet # 2</td>
</tr>
<tr>
<td><input type="checkbox" name="osw" value="3"></td>
<td class="chl"> Turn On Outlet # 3</td>
</tr>
<tr>
<td><input type="checkbox" name="osw" value="4"></td>
<td class="chl"> Turn On Outlet # 4</td>
</tr>
<tr>
<td><input type="checkbox" name="osw" value="5"></td>
<td class="chl"> Turn On Outlet # 5</td>
</tr>
<tr>
<td><input type="checkbox" name="osw" value="6"></td>
<td class="chl"> Turn On Outlet # 6</td>
</tr>
<tr>
<td><input type="checkbox" name="osw" value="7"></td>
<td class="chl"> Turn On Outlet # 7</td>
</tr>
<tr>
<td><input type="checkbox" name="osw" value="8"></td>
<td class="chl"> Turn On Outlet # 8</td>
</tr>
<tr>
<td colspan="2" align="left"> <input type="submit" name="sbt" value="Apply"> <input type="reset" value="Cancel"></td>
</tr>
</tbody>
</table>
</form>
<p></p>
<p></p>
<hr>
</body>
</html>
我可以阅读内容,但不确定如何发回邮件。 基本上,我只想将“动作类型:”无线电控件设置为[0,1](延迟并立即打开),并且我只希望第一个复选框进行切换(打开/关闭)。
有什么想法吗?