2010-04-21 35 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