Python Mechanize: как выбрать выпадающий список, когда два имеют одинаковое имя на веб-странице? - PullRequest
5 голосов
/ 18 сентября 2011

HTML-код, который я пытаюсь сделать механизированным синтаксическим анализом:

<select id="topic_id2" name="topics[]" title="blabla" tabindex="4" class="createSelect">
here go options

Но прямо под ним есть еще одно выпадающее меню со следующим кодом:

<select id="topic_id3" name="topics[]" title="optional" tabindex="5" class="createSelect">

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

Когда я пытаюсь

br = mechanize.Browser()
br.select_form(name="form")
br["topics[]"] = ["Internet"]

, я получаю:

mechanize._form.AmbiguityError: more than one control matching name 'topics[]'

Есть ли способ выбрать элемент управления на основе его идентификатора, используя mechanize.Browser () (при сохранении всего другого синтаксиса формы)?

Спасибо

1 Ответ

1 голос
/ 07 ноября 2011

Внешняя документация для mechanize довольно мала и содержит всего несколько примеров, но документация в коде гораздо более обширна.

Не протестировав это, экземпляр HTMLForm называется form Вы должны быть в состоянии позвонить form.find_control(id="topic_id3") и получить то, что вы хотите.Я не уверен, как это сделать только с Browser объектом, но вы пробовали br.find_control(id="topic_id3")?

...