Использование Python и механизация с ASP-формами - PullRequest
1 голос
/ 21 апреля 2010

Я пытаюсь отправить форму на странице .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 ]

5 голосов
/ 21 апреля 2010

Кнопка не отправляет форму - она ​​вызывает функцию javascript.

Механизировать не может запустить JavaScript, поэтому вы не можете использовать его, чтобы нажать эту кнопку.

Самый простой выход - прочитать эту функцию самостоятельно и посмотреть, что она делает - если она просто отправляет форму, то, возможно, вы можете обойти ее, отправив форму, не нажимая на что-либо.

0 голосов
/ 03 октября 2010

сначала нужно проверить элемент, распознал ли механизатор форму?

for form in br.forms():
       print form
...