2010-04-21 38 views
1

我想提交一个.asp页面上的窗体,但机械化不能识别该控件的名称。表单代码是:使用Python和与ASP形式机械化

<form id="form1" name="frmSearchQuick" method="post"> 
.... 
<input type="button" name="btSearchTop" value="SEARCH" class="buttonctl" onClick="uf_Browse('dledir_search_quick.asp');" > 

我的代码如下:

br = mechanize.Browser() 
br.open(BASE_URL) 
br.select_form(name='frmSearchQuick') 
resp = br.click(name='btSearchTop') 

我也尝试最后一行是:

resp = br.submit(name='btSearchTop') 

我得到的错误是:

raise ControlNotFoundError("no control matching "+description) ControlNotFoundError: no control matching name 'btSearchTop', kind 'clickable' 

如果我打印br我得到这个:IgnoreControl(btSearc hTop =)

但我没有看到HTML中的任何地方。

有关如何提交此表单的任何建议?

回答

5

该按钮不提交表单 - 它调用一些JavaScript函数。

机械化不能运行JavaScript,所以你不能用它来点击那个按钮。

简单的解决方法是自己阅读这个函数,看看它做了什么 - 如果它只是提交表单,那么也许你可以通过提交表单而不用点击任何东西来解决它。

0

你需要先检查一下元素,做过机械识别表单吗?

for form in br.forms(): 
     print form