我正在尝试在.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中没有看到任何内容。
有关如何提交此表单的任何建议吗?
答案 0 :(得分:5)
该按钮不提交表单 - 它调用了一些javascript函数。
Mechanize无法运行javascript,因此您无法使用它来点击该按钮。
简单的方法是自己阅读该功能,并查看它的作用 - 如果它只是提交表单,那么也许您可以通过提交表单而不点击任何内容来绕过它。
答案 1 :(得分:0)
你需要首先检查元素,机械化识别形式吗?
for form in br.forms():
print form