使用Python和Mechanize与ASP表单

时间:2010-04-21 00:28:28

标签: python asp-classic mechanize

我正在尝试在.asp页面上提交表单,但Mechanize无法识别控件的名称。表单代码是:

<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(btSearchTop =)

但我在HTML中没有看到任何内容。

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

2 个答案:

答案 0 :(得分:5)

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

Mechanize无法运行javascript,因此您无法使用它来点击该按钮。

简单的方法是自己阅读该功能,并查看它的作用 - 如果它只是提交表单,那么也许您可以通过提交表单而不点击任何内容来绕过它。

答案 1 :(得分:0)

你需要首先检查元素,机械化识别形式吗?

for form in br.forms():
       print form