在ASP表单中使用Python和Mechanize

1 投票
2 回答
1622 浏览
提问于 2025-04-15 21:51

我正在尝试在一个 .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,所以你不能用它来点击这个按钮。

解决这个问题的简单方法是自己看看那个函数的内容,了解它的作用。如果它只是提交表单,那么你可以尝试直接提交表单,而不需要点击任何东西。

撰写回答