2013-07-02 2 views
0

Я пытаюсь заполнить 3 поля выбора в форме.Заполнение поля в поле выбора с помощью механизации

br.select_form(name='frmentermemorableinformation1') br['frmentermemorableinformation1:strEnterMemorableInformation_memInfo1'] = ['g']

При запуске программы я получаю следующее сообщение об ошибке.

ItemNotFoundError: insufficient items with name 'g'

Это начало соответствующей формы и первый из 3-х отдельных входов.

<form id="frmentermemorableinformation1" name="frmentermemorableinformation1" method="post" action="/personal/a/logon/entermemorableinformation.jsp" class="validationName:(frmentermemorableinformation1) validate:()" autocomplete="off" enctype="application/x-www-form-urlencoded"> <fieldset class="memInfoSelect clearfix"><div class="formField validate:(oneSelectFieldRequired) validationName:(memorableInformation) clearfix"><div class="formFieldInner"><div class="clearfix"><label for="frmentermemorableinformation1:strEnterMemorableInformation_memInfo1">Character 5 &#160;</label><select id="frmentermemorableinformation1:strEnterMemorableInformation_memInfo1" name="frmentermemorableinformation1:strEnterMemorableInformation_memInfo1"><option value="-">Select</option><option value="&amp;nbsp;a">&nbsp;a</option><option value="&amp;nbsp;b">&nbsp;b</option><option value="&amp;nbsp;c">&nbsp;c</option><option value="&amp;nbsp;d">&nbsp;d</option><option value="&amp;nbsp;e">&nbsp;e</option><option value="&amp;nbsp;f">&nbsp;f</option><option value="&amp;nbsp;g">&nbsp;g</option><option value="&amp;nbsp;h">&nbsp;h</option><option value="&amp;nbsp;i">&nbsp;i</option><option value="&amp;nbsp;j">&nbsp;j</option><option value="&amp;nbsp;k">&nbsp;k</option><option value="&amp;nbsp;l">&nbsp;l</option><option value="&amp;nbsp;m">&nbsp;m</option><option value="&amp;nbsp;n">&nbsp;n</option><option value="&amp;nbsp;o">&nbsp;o</option><option value="&amp;nbsp;p">&nbsp;p</option><option value="&amp;nbsp;q">&nbsp;q</option><option value="&amp;nbsp;r">&nbsp;r</option><option value="&amp;nbsp;s">&nbsp;s</option><option value="&amp;nbsp;t">&nbsp;t</option><option value="&amp;nbsp;u">&nbsp;u</option><option value="&amp;nbsp;v">&nbsp;v</option><option value="&amp;nbsp;w">&nbsp;w</option><option value="&amp;nbsp;x">&nbsp;x</option><option value="&amp;nbsp;y">&nbsp;y</option><option value="&amp;nbsp;z">&nbsp;z</option><option value="&amp;nbsp;0">&nbsp;0</option><option value="&amp;nbsp;1">&nbsp;1</option><option value="&amp;nbsp;2">&nbsp;2</option><option value="&amp;nbsp;3">&nbsp;3</option><option value="&amp;nbsp;4">&nbsp;4</option><option value="&amp;nbsp;5">&nbsp;5</option><option value="&amp;nbsp;6">&nbsp;6</option><option value="&amp;nbsp;7">&nbsp;7</option><option value="&amp;nbsp;8">&nbsp;8</option><option value="&amp;nbsp;9">&nbsp;9</option></select></div>

Что именно я делаю неправильно, я попытался добавить &amp;nbsp; к началу g упаковывают что была проблема, но я просто получаю ту же ошибку с '&amp;nbsp;g' заменой 'g'. Благодарю.

ответ

0

Try '& г' ..................

Это работает для меня: '&nbsp;g' (в списке)

Я не подумайте, что есть простой способ выяснить, какое правильное значение было использовать в вашем коде на Python. Обычно вы не видите такие значения. Я просто использовал Mechanize для печати, что он считает, что значения:

import mechanize 

br = mechanize.Browser() 
br.open("http://localhost:8080/1.htm") 
br.select_form(name='frmentermemorableinformation1') 

select = br.form.find_control("frmentermemorableinformation1:strEnterMemorableInformation_memInfo1", 
        type='select') 

for item in select.items: 
    print item.attrs['value'] 

--output:-- 
- 
&nbsp;a 
&nbsp;b 
&nbsp;c 
&nbsp;d 
&nbsp;e 
&nbsp;f 
&nbsp;g 
... 
... 

I guess I should look up some html to understand why it wanted me to enter the string rather than the value and what &nbsp; does and why amp isnt present in the string version.

Есть определенные символы, которые являются незаконными в HTML. Например, один из них - «<», потому что он похож на начало тега. Но что, если вы хотите отобразить 'x < 3' на вашей странице html? Html предоставляет синтаксис, который позволяет включать незаконные символы внутри html, используя так называемые «html-сущности». Чтобы добавить символ «<» на вашу страницу, вы используете объект html &lt; («меньше»). Объекты Html начинаются с «&», за ними следуют некоторые цифры или некоторые символы, которые представляют собой незаконный символ, и заканчиваются точкой с запятой.

Поскольку HTML объекты начинаются с «&», это означает, что вы не можете писать «&» в вашем HTML, если вы хотите, чтобы отобразить «&» персонаж на вашей странице - потому что HTML подумает «&» является началом html-объекта. Таким образом, вы должны использовать html-объект для '&', который является &amp; («амперсанд»).

Существует html-объект &nbsp; («неразрывное пространство»), который создает пространство в html. Как правило, html разрушает все пробелы, поэтому &nbsp; используется для создания пробелов, которые не будут разрушаться. Однако обратите внимание, что в атрибутах значений опций написано «nbsp;», которое не является объектом html, поскольку оно не начинается с «&», поэтому это всего лишь серия символов, которая является частью стоимость. Таким образом, стоимость каждого опциона представляет собой комбинацию:

& (represented by an html entity as required) 

и символы:

nbsp;g 

Это действительно странные значения.

+0

ItemNotFoundError: недостаточно элементов с именем '& g' – Diofsi

+0

Пробовал это без пробела и получил ту же ошибку, также попробовал его без скобок на тот случай, если вы имели в виду, что и получили 'TypeError: ListControl, должен установить последовательность' did not mean отправить это как 2 отдельных комментария. – Diofsi

+0

'['  g']' работал, помещал нужную информацию и попал на следующую страницу. Думаю, мне нужно найти какой-нибудь HTML-код, чтобы понять, почему он хотел, чтобы я ввел строку, а не значение, и что '& nbsp;' делает и почему amp не присутствует в строковой версии. – Diofsi

 Смежные вопросы

  • Нет связанных вопросов^_^