在ASP表单中使用Python和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
你需要先检查一下元素,mechanize有没有识别到这个表单呢?
for form in br.forms():
print form
5
这个按钮并不是用来提交表单的,而是调用了一个JavaScript函数。
Mechanize这个工具无法运行JavaScript,所以你不能用它来点击这个按钮。
解决这个问题的简单方法是自己看看那个函数的内容,了解它的作用。如果它只是提交表单,那么你可以尝试直接提交表单,而不需要点击任何东西。