2013-07-02 47 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

嘗試 '& G' ..................

這對我的作品:'&nbsp;g'(名單內)

我不認爲有一個簡單的方法可以確切地確定在Python代碼中使用的正確值。你通常不會看到這樣的值。我只是用機械化打印出它認爲的值是:

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裏面是非法的。例如,其中一個是'<',因爲它看起來像標籤的開始。但是如果你想在你的html頁面上顯示'x < 3'呢? Html提供了一種語法,可讓您使用所謂的「html實體」在HTML內包含非法字符。要在頁面上包含'<'字符,請使用html實體&lt;(「小於」)。 Html實體以'&'開頭,後跟一些數字或一些代表非法字符的字符,並以分號結尾。

,因爲HTML實體與「&」開始,這意味着當你想你的頁面上顯示「&」字符,你不能在你的HTML寫「&」 - 因爲HTML會覺得「&」是一個html實體的開始。所以你必須使用'&'的html實體,這恰好是&amp;(「和號」)。

有一個html實體&nbsp;(「non-breaking space」),它在html中創建一個空格。通常,html會摺疊所有空白區域,所以&nbsp;用於創建不會摺疊的空格。但是,請注意,在選項的值屬性中,它被寫入'nbsp;',它不是一個html實體,因爲它不以'&'開頭,所以它只是一系列屬於值。所以,每個選項的值的組合:和

& (represented by an html entity as required) 

人物:

nbsp;g 

這些都是很奇怪的值。

+0

ItemNotFoundError:缺少名稱爲'&g'的項目 – Diofsi

+0

嘗試了它沒有空格,並得到相同的錯誤,也試過它沒有括號,以防萬一你的意思,並得到'TypeError:ListControl,必須設置序列'並不意味着發送這2個單獨的評論。 – Diofsi

+0

'['  g']'工作,輸入正確的信息並進入下一頁。我想我應該查找一些html來理解爲什麼它要我輸入字符串而不是數值,以及爲什麼amp不是不存在於字符串版本中的。 – Diofsi