繁体   English   中英

在Mechanize中,如何设置ImageButton的x,y值?

[英]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的外观来看,机械化无法处理此表单的提交。 您已经知道要发布哪些数据,请尝试使用urlliburllib2手动发布数据:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM