[英]In Mechanize, how to set the x,y value of ImageButton?
我正在使用Mechanize Python作为Web客户端来提交表单。 但是,我没有找到一种以这种形式设置ImageButton的x,y的方法。
我尝试了不同的方法:
1)首先是找到控件:
bt = frm.find_control('ImageButtonID')
bt.x = 88
bt.y = 10
2)第二个是使用字典:
ctls = {}
ctls['ImageButton1.x'] = 88
ctls['ImageButton1.y'] = 10
data = urllib.urlencode(ctls)
br.open(url,data)
但是这些方法都无效,有什么解决方案吗? 非常感谢
这是html代码:
TITLE函数EnterTo(){如果(window.event.keyCode == 13){form1.submit(); }}函数ChangeImage(){document.getElementById(“ yzm”)。src = document.getElementById(“ yzm”)。src +'?'; }
<input name="deptID" type="hidden" id="deptID" value="1" /> <input name="dateType" type="hidden" id="dateType" value="Today" />
<input name="timeType" type="hidden" id="timeType" value="AM" />
<div class="numberBG">
<div class="Repeater">
<table class="Item">
<tr>
<td>
<input type="image" name="Repeater1$ctl00$ImageButton1" id="Repeater1_ctl00_ImageButton1" title="XXXXXXXX" src="images/1_1.jpg" style="border-width:0px;" />
</td>
</tr>
</table>
<table class="table">
<tr>
<td style="width:100px;" class="txt">the code</td>
<td style="width:90px;"><input name="Txt_Yzm" type="text" id="Txt_Yzm" onkeydown="if(event.keyCode==13)event.keyCode=9 " style="width:90px;" />
<td style="width:50px;"><img src="../../gif.aspx?" id="yzm" onclick="ChangeImage();" alt="try again" style="width:50px;height:24px"></td>
</tr>
<tr>
<td colSpan="3" style="width:240px;"><select name="DropDownList1" id="DropDownList1" style="width:240px;">
在Chrome浏览器中,我发现发布数据是
__VIEWSTATE =%2FwEPDwUJMjE0NzU0MTk4D2QWAmYPZBYIAgMPDxYCHgRUZXh0BQnotKLliqHpg6hkZAIEDw8WAh8ABRfnlKjmiLfvvJo1NTczL%2BWImOWtpuS6rmRkAgUPFgIeC18hSXRlbUNvdW50AgQWCGYPZBYEAgEPDxYCHwAFLOWFseWPluWPt1s3NV3lvZPliY3lj7dbMTAyMF3nrYnlvoXkurrmlbBbNTVdZGQCAw8PFgYeD0NvbW1hbmRBcmd1bWVudAUBMR4ISW1hZ2VVcmwFDmltYWdlcy8xXzEuanBnHgdUb29sVGlwBRLnu7zlkIjmiqXplIDkuJrliqFkZAIBD2QWBAIBDw8WAh8ABSrlhbHlj5blj7dbMV3lvZPliY3lj7dbMjAwMV3nrYnlvoXkurrmlbBbMV1kZAIDDw8WBh8CBQEyHwMFDmltYWdlcy8xXzIuanBnHwQFDOW8gOelqOS4muWKoWRkAgIPZBYEAgEPDxYCHwAFKuWFseWPluWPt1sxXeW9k%2BWJjeWPt1szMDAxXeetieW%2BheS6uuaVsFswXWRkAgMPDxYGHwIFATMfAwUOaW1hZ2VzLzFfMy5qcGcfBAUS5Z%2B65bu65oql6ZSA5Lia5YqhZGQCAw9kFgQCAQ8PFgIfAAUr5YWx5Y%2BW5Y%2B3WzE1XeW9k%2BWJjeWPt1s0MDEzXeetieW%2BheS6uuaVsFsyXWRkAgMPDxYGHwIFATQfAwUOaW1hZ2VzLzFfNC5qcGcfBAUV5YCf5qy%2B44CB6Jaq6YWs5Yqz5YqhZGQCBw8QZBAVABUAFCsDAGRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYGBRxSZXBlYXRlcjEkY3RsMDAkSW1hZ2VCdXR0b24xBRxSZXBlYXRlcjEkY3RsMDEkSW1hZ2VCdXR0b24xBRxSZXBlYXRlcjEkY3RsMDIkSW1hZ2VCdXR0 b24xBRxSZXBlYXRlcjEkY3RsMDMkSW1hZ2VCdXR0b24xBQtQcmludEJ1dHRvbgUKQmFja0J1dHRvbpwJ7xuebnfVXIs68Z0mpioF3Dpy&Repeater1%24ctl00%24ImageButton1.x = 74&Repeater1%24ctl00%24ImageButton1.y = 19&Txt_Yzm =&__ EVENTVALIDATION =%2FwEWCwLc%2Bdl4AqPSn9wLAuqo1NQIAq3v2K8JAtW984UHAtDAyPwJAuP1ziAC3oKsnQsC5NXi8AQCw9v50gkCz6%2BuzAH2E8Hvp9iYVUtn77jo3FKnheOfhg%3D%3D
从HTML的外观来看,机械化无法处理此表单的提交。 您已经知道要发布哪些数据,请尝试使用urllib
和urllib2
手动发布数据:
import urllib
import urllib2
url = 'http://example.com'
form_data = {'field1': 'value1', 'field2': 'value2'}
params = urllib.urlencode(form_data)
response = urllib2.urlopen(url, params)
data = response.read()
我在问题中找到了HTTP错误的原因。 由于在python urllib中,不支持“保持活动”功能,因此在以下交互中获得的cookie无效。 我使用在IE中获得的cookie来运行代码,并获得所需的结果!
顺便说一句, Fiddler是调试HTTP请求的绝佳工具。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.