我正在尝试以这样的形式填写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  </label><select id="frmentermemorableinformation1:strEnterMemorableInformation_memInfo1" name="frmentermemorableinformation1:strEnterMemorableInformation_memInfo1"><option value="-">Select</option><option value="&nbsp;a"> a</option><option value="&nbsp;b"> b</option><option value="&nbsp;c"> c</option><option value="&nbsp;d"> d</option><option value="&nbsp;e"> e</option><option value="&nbsp;f"> f</option><option value="&nbsp;g"> g</option><option value="&nbsp;h"> h</option><option value="&nbsp;i"> i</option><option value="&nbsp;j"> j</option><option value="&nbsp;k"> k</option><option value="&nbsp;l"> l</option><option value="&nbsp;m"> m</option><option value="&nbsp;n"> n</option><option value="&nbsp;o"> o</option><option value="&nbsp;p"> p</option><option value="&nbsp;q"> q</option><option value="&nbsp;r"> r</option><option value="&nbsp;s"> s</option><option value="&nbsp;t"> t</option><option value="&nbsp;u"> u</option><option value="&nbsp;v"> v</option><option value="&nbsp;w"> w</option><option value="&nbsp;x"> x</option><option value="&nbsp;y"> y</option><option value="&nbsp;z"> z</option><option value="&nbsp;0"> 0</option><option value="&nbsp;1"> 1</option><option value="&nbsp;2"> 2</option><option value="&nbsp;3"> 3</option><option value="&nbsp;4"> 4</option><option value="&nbsp;5"> 5</option><option value="&nbsp;6"> 6</option><option value="&nbsp;7"> 7</option><option value="&nbsp;8"> 8</option><option value="&nbsp;9"> 9</option></select></div>
我到底做错了什么,我尝试将&nbsp;
添加到问题的g
开头,但我只是在'&nbsp;g'
替换'g'
时遇到同样的错误}。感谢。
答案 0 :(得分:0)
尝试'&amp; G” ..................
这对我有用:' 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:--
-
a
b
c
d
e
f
g
...
...
我想我应该查看一些HTML来理解它为什么要我这样做 输入字符串而不是值和什么&amp; nbsp;和 为什么放大器不存在于字符串版本中。
某些字符在html中是非法的。例如,其中一个是'&lt;'因为它看起来像标签的开头。但是如果你想显示'x&lt;你的HTML页面上的3'? Html提供了一种语法,允许您使用所谓的“html实体”在html中包含非法字符。包含'&lt;'您的页面上的字符,您使用html实体<
(“小于”)。 Html实体以'&amp;'开头,后跟一些数字或一些代表非法字符的字符,并以分号结尾。
因为html实体以'&amp;'开头,这意味着你不能写'&amp;'在您的HTML中,当您想要显示'&amp;'时你网页上的字符 - 因为html会认为'&amp;'是一个html实体的开始。所以你必须使用html实体'&amp;',恰好是&
(“&符”)。
有一个html实体
(“非破坏空间”),它在html中创建一个空格。通常,html会折叠所有空格,因此
用于创建不会折叠的空格。但是请注意,在选项的值属性中,它是'nbsp;',它不是html实体,因为它不以'&amp;'开头,所以它只是一系列字符的一部分价值。所以每个选项的值都是:
& (represented by an html entity as required)
和字符:
nbsp;g
这些都是非常奇怪的价值观。