2013-01-10 115 views
1

这是HTML:如何选择单选按钮和提交表单

<form method="post" action="./xxxxx" name="form1"> 
    <input type="hidden" name="requestKey" value="52032a76cf53340b07052fd143feddc4a9d8f18130c80ec86003ab56e0d91b36"/> 
    <input type="hidden" name="option" value="txnlist"> 
    <input type="hidden" name="account" value='1336169999'> 
    <input type="hidden" name="app" value="D"> 
    <input type="hidden" name="lockType" value=""> 

    <p><span class="header2">&nbsp;Statement options </span> 
     <table summary="" width="100%" border="0" cellpadding="1" cellspacing="1"> 
      <tr> 
       <td width="20"></td> 
       <td width="20"><input type="radio" name="optDateFilter" value="1"></td> 
       <td>Transactions for the last 30 days</td> 
       <td></td> 
      </tr> 
      <tr> 
       <td width="20"></td> 
       <td width="20"><input type="radio" name="optDateFilter" value="2"></td> 
       <td>Transactions for the last 90 days</td> 
       <td></td> 
      </tr> 
      <tr> 
       <td width="20">&nbsp;</td> 
       <td width="20"><input type="radio" name="optDateFilter" checked='checked' value="3" style="vertical-align: middle"></td> 
       <td> 
        <div> 
         <font style="vertical-align: middle;">Transactions from&nbsp;</font> 
         <script src='jquery/js/ui/min/jquery.ui.datepicker.min-1.8.10.js'></script> 
         <script type='text/javascript'>$(function() {$('#datepicker1').datepicker({ changeMonth : true, changeYear : true, dateFormat : 'dd/mm/yy', showOn: 'both', buttonImage: 'images/calendar.png', buttonImageOnly: true }); }); </script> 
         <input type='text' id='datepicker1' name='txtFromDate' size='11' maxlength='10' value='14/12/2012' onchange="checkFromDate(document.form1.txtFromDate.value);document.form1.optDateFilter[2].checked = true;"> 
         <font style="vertical-align: middle;">to</font> 
         <script type='text/javascript'>$(function() {$('#datepicker2').datepicker({ changeMonth : true, changeYear : true, dateFormat : 'dd/mm/yy', showOn: 'both', buttonImage: 'images/calendar.png', buttonImageOnly: true }); }); </script> 
         <input type='text' id='datepicker2' name='txtToDate' size='11' maxlength='10' value='01/01/2013' onchange="checkToDate(document.form1.txtFromDate.value,document.form1.txtToDate.value);document.form1.optDateFilter[2].checked = true;"> 
        </div> 
       </td> 
       <td><font style="font-size: 8pt; vertical-align: middle;"><i>(maximum date range 3 months)</i></font></td> 
      </tr> 
     </table> 
     <table summary="" cellpadding="1" cellspacing="1" border="0"> 
      <tr> 
       <td width="20">&nbsp;</td> 
       <td width="20"> 
        <a href="javascript:if(document.form1.optDateFilter[2].checked==true){CheckAndSubmit(document.form1.txtFromDate.value,document.form1.txtToDate.value);}else{showOverlay();document.form1.submit();};"> 
         <img src="images/proceed.gif" alt="Show the selected range of transactions" border="0" width="22" height="22" /> 
        </a> 
       </td> 
       <td> 
        <a href="javascript:if(document.form1.optDateFilter[2].checked==true){CheckAndSubmit(document.form1.txtFromDate.value,document.form1.txtToDate.value);}else{showOverlay();document.form1.submit();};" title="Show the selected range of transactions">Show the selected range of transactions</a> 
       </td> 
      </tr> 
    </table> 
</form> 

这是代码我有,这是行不通的:

self.browser.select_form('form1') 
self.browser.form.set_all_readonly(False) 
self.browser['txtFromDate'] = '28/12/12' 
self.browser['txtToDate'] = '01/01/13' 
resp = self.browser.submit() 
html = resp.read() 
+0

您的代码不会尝试设置单选按钮。你能解释一下你的代码中没有工作吗? –

+0

在网页上,如果您选择了日期选择器,它会自动检查单选按钮,以便我正在尝试做什么。我想到了它。 –

+0

该网页可能使用JavaScript来做到这一点。机械化不会运行任何JavaScript代码:它只会看到已创建的HTML并直接使用它。 –

回答

1

我想,我不得不为此

self.browser.select_form('form1') 
    self.browser['optDateFilter'] = ['2'] 
    self.browser.form.find_control(name="txtFromDate", id="datepicker1").value = "13/10/12" 
    self.browser.form.find_control(name="txtToDate", id="datepicker2").value = "01/01/13" 
    resp = self.browser.submit() 
1

机械化有一个奇怪的怪癖,因为有可能是一个HTML文档中的多个单选按钮元素具有相同名称坚持说ÿ ou使用列表作为值,即使在任何时候只能选择一个单选按钮。这意味着,你需要使用这样的:

self.browser.form.find_control(name='optDateFilter').value = ['2'] 

这同样适用于复选框它更有意义,因为用户可以选择多个值。

相关问题