HTML表单API¶
HTML文档中的表单表示为 mechanize.HTMLForm
.每个窗体都是控件的集合。不同类型的控制由下面记录的不同类别表示。
- class mechanize.HTMLForm(action, method='GET', enctype='application/x-www-form-urlencoded', name=None, attrs=None, request_class=<class 'mechanize._request.Request'>, forms=None, labels=None, id_to_labels=None, encoding=None)[源代码]¶
基类:
object
表示单个HTML<form>。<form>元素。
表单由一系列控件组成,这些控件通常具有名称,并且可以具有各种值。各种类型控件的值代表不同的值:文本、零或多个选项中的一个或多个选项,以及要上载的文件。可以单击某些控件提交表单,可单击控件的值有时包括单击的坐标。
表单可以填写要返回到服务器的数据,然后提交,使用click方法生成适合传递到的请求对象
mechanize.urlopen()
(或单击“请求数据”或单击“与第三方代码集成的成对方法”)。通常,不会直接创建htmlform实例。相反,它们是在使用mechanize浏览器浏览页面时自动创建的。但是,如果您自己构造htmlform对象,请注意,只有在调用fixup方法之后,才能正确初始化htmlform实例。参见
mechanize.ListControl
因为这是必需的。为窗体(窗体)编制索引 ["control_name"] )返回命名控件的value属性。表单索引(表单)的分配 ["control_name"] =something)相当于指定控件的value属性的赋值。如果需要比只提供控件的名称更具体,请使用set_value和get_value方法。
listcontrol值是项名称的列表(具体来说,是选定的项的名称,而不是禁用的项的名称,因此是“成功的”——即,使数据返回到服务器)。列表项的名称是对应HTML元素的“value”属性的值。
例子::
<INPUT type="CHECKBOX" name="cheeses" value="leicester"></INPUT> <INPUT type="CHECKBOX" name="cheeses" value="cheddar"></INPUT>
定义一个名为“cheeses”的复选框控件,该控件有两个项,分别名为“leicester”和“cheddar”。
另一个例子:
<SELECT name="more_cheeses"> <OPTION>1</OPTION> <OPTION value="2" label="CHEDDAR">cheddar</OPTION> </SELECT>
定义一个名为“more-cheeses”的select控件,该控件有两个项,分别命名为“1”和“2”(因为选项元素的值html属性默认为元素内容——请参见
mechanize.SelectControl
有关这些默认规则的更多信息)。要选择、取消选择或以其他方式操作单个列表项,请使用
mechanize.HTMLForm.find_control()
和mechanize.ListControl.get()
方法。要设置整个值,请像对任何其他控件那样执行:使用索引或 set_value/get_value 方法。例子:
# select *only* the item named "cheddar" form["cheeses"] = ["cheddar"] # select "cheddar", leave other items unaffected form.find_control("cheeses").get("cheddar").selected = True
某些控件(不带“多属性”的“单选”和“选择”)一次只能选择零个或一个项。某些控件(复选框和具有多个属性的Select)一次可以选择多个项。要设置ListControl的整个值,请将序列分配给表单索引:
form["cheeses"] = ["cheddar", "leicester"]
如果listcontrol不是多个选择,则指定的列表的长度必须为1。
要分别检查控件是否有项、项是否被选中或项是否成功(选中和未禁用):
"cheddar" in [item.name for item in form.find_control("cheeses").items] "cheddar" in [item.name for item in form.find_control("cheeses").items and item.selected] "cheddar" in form["cheeses"] # or "cheddar" in form.get_value("cheeses")
请注意,某些列表项可能被禁用(请参见下文)。
注意以下错误:
form[control_name] = control_value assert form[control_name] == control_value # not necessarily true
原因是那张表 [control_name] 总是按照在HTML中列出的顺序给出列表项。
列表项(因此也可以是列表值)可以根据列表项标签来引用,而不是使用适当的标签参数来引用列表项名称。请注意,每个项目可能有几个标签。
选项内容、标签和值的默认值问题有些复杂:请参见
mechanize.SelectControl
和mechanize.ListControl.get_item_attrs()
如果你认为你需要知道。控件可以禁用或只读。在这两种情况下,只有清除这些标志(参见下面的示例),才能更改控件的值。“禁用”是浏览器通常通过“灰显”控件来表示的状态。禁用的控件不是“成功的”——它们不会导致数据返回到服务器。只读控件通常作为只读文本框出现在浏览器中。只读控件成功。也可以禁用列表项。尝试选择或取消选择禁用的项目失败,出现attributeError。
如果许多控件都是只读的,则执行此操作可能很有用:
form.set_all_readonly(False)
清除控件的Value属性,使其不成功(直到随后设置了值):
form.clear("cheeses")
更多示例:
control = form.find_control("cheeses") control.disabled = False control.readonly = False control.get("gruyere").disabled = True control.items[0].selected = True
有关进一步的文档,请参见各种控制类。许多方法使用name、type、kind、id、label和nr参数来指定要对其操作的控件:请参见
mechanize.HTMLForm.find_control()
.如果找不到指定的控件,则引发ControlNotFoundError(ValueError的子类)。这包括找到非listcontrol的情况,但方法(例如set)需要listcontrol。如果找不到列表项,将引发itemNotFoundError(valueError的子类)。如果试图选择多个项,但控件不允许这样做,或者调用set/get-single,并且控件包含多个项,则会引发ItemCounterRor(ValueError的子类)。如果控件或项是只读的或禁用的,并且试图更改其值,则会引发attributeError。
安全说明:请记住,如果您直接或间接地对HTMLForm实例进行pickle,那么您存储在HTMLForm实例中的任何密码都将被保存到磁盘中。最简单的解决方案是避免酸洗htmlform对象。您也可以在填写任何密码之前进行泡菜,或者在泡菜之前将密码设置为“”。
公共属性:
- 变量:
action -- 完全(绝对URI)表单操作
method -- “获取”或“发布”
enctype -- 表单传输编码MIME类型
name -- 表单名称(如果未指定名称,则无)
attrs -- 将原始HTML表单属性映射到其值的字典
controls -- 控件实例列表;不要更改此列表(相反,调用form.new_control生成控件并将其添加到表单中,或者如果已经有控件实例,则调用control.add_to_表单)
填表方法:
这些方法中的大多数都有非常相似的参数。参见
mechanize.HTMLForm.find_control()
有关名称、类型、种类、标签和nr参数的详细信息。def find_control(self, name=None, type=None, kind=None, id=None, predicate=None, nr=None, label=None) get_value(name=None, type=None, kind=None, id=None, nr=None, by_label=False, # by_label is deprecated label=None) set_value(value, name=None, type=None, kind=None, id=None, nr=None, by_label=False, # by_label is deprecated label=None) clear_all() clear(name=None, type=None, kind=None, id=None, nr=None, label=None) set_all_readonly(readonly)
仅应用于FileControls的方法:
add_file(file_object, content_type="application/octet-stream", filename=None, name=None, id=None, nr=None, label=None)
仅适用于可单击控件的方法:
click(name=None, type=None, id=None, nr=0, coord=(1,1), label=None) click_request_data(name=None, type=None, id=None, nr=0, coord=(1,1), label=None) click_pairs(name=None, type=None, id=None, nr=0, coord=(1,1), label=None)
- add_file(file_object, content_type=None, filename=None, name=None, id=None, nr=None, label=None)[源代码]¶
添加要上载的文件。
- 参数:
file_object -- 类似文件的对象(具有读取方法),从中读取要上载的数据
content_type -- 要上载的数据的MIME内容类型
filename -- 要传递到服务器的文件名
如果文件名为“无”,则不会向服务器发送文件名。
如果内容类型为“无”,则根据文件名和从文件对象读取的数据猜测内容类型。
目前,猜测的内容类型总是application/octet流。
请注意文件上载控件的以下有用HTML属性(请参阅HTML 4.01规范第17节):
- accept :内容类型的逗号分隔列表
服务器将正确处理;您可以使用它筛选出不符合要求的文件。
- size :xxx IIRC,这表示
需要多个或单个文件
maxlength :xxx以字节为单位的最大内容长度提示?
- clear(name=None, type=None, kind=None, id=None, nr=None, label=None)[源代码]¶
清除控件的值属性。
因此,在随后设置值之前,受影响的控制不会成功。在只读控件上引发attributeError。
- click(name=None, type=None, id=None, nr=0, coord=(1, 1), request_class=<class 'mechanize._request.Request'>, label=None)[源代码]¶
返回单击控件所产生的请求。
请求对象是一个Mechanical.Request实例,可以将其传递给Mechanic.Urlopen。
只能单击某些控件类型(输入/提交&按钮/提交按钮和图像)。
将根据名称、类型和nr参数单击第一个可单击控件(至于find_control)。如果没有指定名称、类型、ID或编号,并且没有可单击的控件,则将返回表单当前未单击状态的请求。
如果指定了名称、类型、ID或NR中的任何一个,但找不到匹配的控件,则会引发indexError。如果htmlform具有无法识别的enctype属性,则会引发ValueError。
您可以选择指定要单击的坐标,这只会在单击图像时产生差异。
- click_pairs(name=None, type=None, id=None, nr=0, coord=(1, 1), label=None)[源代码]¶
至于click请求数据,返回(key,value)对的列表。
可以将此列表用作urlib.urlencode的参数。这通常只有在使用httplib或urllib而不是mechanize时才有用。如果您想手动调整键和/或值,它也可能很有用,但这不必。否则,请使用单击方法。
请注意,此方法仅适用于mime类型x-www-form-urlencoded的表单。尤其是,它不会返回文件上载所需的信息。如果您需要上传文件而不使用mechanize,请使用单击“请求”数据。
- click_request_data(name=None, type=None, id=None, nr=0, coord=(1, 1), request_class=<class 'mechanize._request.Request'>, label=None)[源代码]¶
至于click方法,但返回一个元组(url、data、headers)。
您可以使用此数据向服务器发送请求。如果您使用的是httplib或urllib,而不是mechanize,那么这是很有用的。否则,请使用单击方法。
- find_control(name=None, type=None, kind=None, id=None, predicate=None, nr=None, label=None)[源代码]¶
找到并返回表单中的某些特定控件。
必须至少提供name、type、kind、predicate和nr参数中的一个。如果找不到匹配的控件,则引发ControlNotFoundError。
如果指定了名称,则控件必须具有指示的名称。
如果指定了类型,则控件必须具有指定的类型(除了可能用于<input>html标记的类型:“text”、“password”、“hidden”、“submit”、“image”、“button”、“radio”、“checkbox”、“file”之外,我们还具有“reset”、“buttonbutton”、“submitbutton”、“resetbutton”、“textarea”、“selec”t”)。
如果指定了Kind,则控件必须属于指定的组,每个组都满足特定的接口。类型有“文本”、“列表”、“多列表”、“单个列表”、“可单击”和“文件”。
如果指定了ID,则控件必须具有指示的ID。
如果指定了谓词,则控件必须与该函数匹配。谓词函数作为单个参数传递给控件,并应返回一个布尔值,指示控件是否匹配。
nr,如果提供,是控件的序列号(其中0是第一个)。注意,控件0是第一个匹配所有其他参数的控件(如果提供);它不一定是表单中的第一个控件。如果没有提供nr,则如果多个控件与其他参数匹配,则会引发歧义错误。
如果指定了标签,则控件必须具有此标签。请注意,收音机控件和复选框从来没有标签:它们的项有标签。
- fixup()[源代码]¶
添加所有控件后使窗体正常化。
这通常由ParseFile和ParseResponse调用。除非您正在构建自己的控制实例,否则不要将其称为您自己。
将所有控件添加到表单后,只应调用一次此方法。
- get_value(name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代码]¶
控件的返回值。
如果只提供名称和值参数,则等效于
form[name]
- get_value_by_label(name=None, type=None, kind=None, id=None, label=None, nr=None)[源代码]¶
所有参数都应按名称传递。
- new_control(type, name, attrs, ignore_unknown=False, select_default=False, index=None)[源代码]¶
向窗体中添加新控件。
这通常被称为mechanize。除非您正在构建自己的控件实例,否则不要自己调用它。
请注意,表示项列表的控件是由仅包含单个列表项的控件生成的。参见
mechanize.ListControl
更多信息。- 参数:
type -- 控制类型(见
mechanize.Control
对于列表)attrs -- 控件的HTML属性
ignore_unknown -- 如果为true,请对未知类型的控件使用虚拟控件实例;否则,请使用textcontrol
select_default -- 对于单选和多选选择控件,如果不存在“selected”HTML属性,则选择第一个项作为默认项(此默认设置在调用htmlform.fixup方法时发生)
index -- HTML中相应元素的索引(有关动机,请参阅moreformtests.test_interspersed_controls)
- possible_items(name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代码]¶
返回指定控件可以获取的所有值的列表。
- set(selected, item_name, name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代码]¶
选择/取消选择命名列表项。
- 参数:
selected -- 布尔选择状态
- set_single(selected, name=None, type=None, kind=None, id=None, nr=None, by_label=None, label=None)[源代码]¶
在只有一个项的控件中选择/取消选择列表项。
如果控件有多个列表项,将引发itemCounterRor。
这只是一个方便的方法,所以您不需要知道项的名称——这些单个项控件中的项名称通常是一些无意义的东西,如“1”或“on”。
例如,如果一个复选框只有一个名为“on”的项,则以下两个调用是等效的:
control.toggle("on") control.toggle_single()
- set_value(value, name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代码]¶
设置控件的值。
如果只提供名称和值参数,则等效于
form[name] = value
- set_value_by_label(value, name=None, type=None, kind=None, id=None, label=None, nr=None)[源代码]¶
所有参数都应按名称传递。
- toggle(item_name, name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代码]¶
切换已命名列表项的选定状态。
- class mechanize.Control(type, name, attrs, index=None)[源代码]¶
基类:
object
HTML表单控件。
HTMLForm包含一系列控件。可以使用htmlform.find_control方法或htmlform.controls属性访问htmlform中的控件。
控制实例通常使用parsefile/parseresponse函数构造。如果使用这些函数,可以忽略本段的其余部分。只有在调用Fixup方法后才正确初始化控件。实际上,这只对ListControl实例是严格必要的。这是必要的,因为listcontrols是由listcontrols构建的,每个listcontrols只包含一个项,并且它们的初始值只能在序列完成后才能知道。
可接受分配给value属性的类型和值由子类定义。
如果disabled属性为true,则表示浏览器通常通过“灰显”控件来表示的状态。如果disabled属性为true,则如果试图更改其值,控件将引发attributeError。此外,根据W3C HTML 4标准的定义,该控件不会被认为是“成功的”——即,它不会为HTMLForm的返回值提供任何数据。单击*方法。若要启用控件,请将禁用的属性设置为假值。
如果readonly属性为true,则如果试图更改其值,控件将引发attributeError。若要使控件可写,请将readonly属性设置为假值。
所有控件都具有禁用和只读属性,而不仅仅是那些可能具有相同名称的HTML属性的控件。
在赋值给value属性时,会引发以下异常:typeError、attributeError(例如,如果不应将value属性赋值给,因为控件被禁用)和valueError。
如果名称或值属性为“无”,或者值为空列表,或者如果控件被禁用,则该控件不成功。
公共属性:
- 变量:
- class mechanize.ScalarControl(type, name, attrs, index=None)[源代码]¶
基类:
Control
其值不限于某一规定集的控件。
某些scalarControls不接受任何值属性。否则,只取一个值,该值必须是类似字符串的。
其他只读公共属性:
- 变量:
attrs (dict) -- 将控件的原始HTML属性的名称映射到其值的字典
- get_labels()¶
返回此控件的所有标签(标签实例)。
如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。
- pairs()¶
返回适合传递到URLENCODE的(键、值)对的列表。
- class mechanize.TextControl(type, name, attrs, index=None)[源代码]¶
-
文本输入控件。
包括HTML元素:输入/文本、输入/密码、输入/隐藏、文本区域
- get_labels()¶
返回此控件的所有标签(标签实例)。
如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。
- pairs()¶
返回适合传递到URLENCODE的(键、值)对的列表。
- class mechanize.FileControl(type, name, attrs, index=None)[源代码]¶
-
文件上传,输入类型=文件。
filecontrol的value属性始终为none。改为使用添加文件。
附加公共方法:
add_file()
- add_file(file_object, content_type=None, filename=None)[源代码]¶
从要上载的指定文件添加数据。如果指定,则在HTTP头中发送内容类型和文件名。
- get_labels()¶
返回此控件的所有标签(标签实例)。
如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。
- pairs()¶
返回适合传递到URLENCODE的(键、值)对的列表。
- class mechanize.IgnoreControl(type, name, attrs, index=None)[源代码]¶
-
我们不感兴趣的控制。
包括HTML元素:输入/重置、按钮/重置、输入/按钮、按钮/按钮
按照HTML4的术语,这些控件总是不成功的(即,它们不需要任何信息返回到服务器)。
button/button用于为嵌入在HTML中的脚本生成事件。
ignoreControl的value属性始终为none。
- get_labels()¶
返回此控件的所有标签(标签实例)。
如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。
- pairs()¶
返回适合传递到URLENCODE的(键、值)对的列表。
- class mechanize.ListControl(type, name, attrs={}, select_default=False, called_as_base_class=False, index=None)[源代码]¶
基类:
Control
表示项序列的控件。
list control的value属性表示控件中成功的列表项。成功的列表项是已选择但未禁用的列表项。
listcontrol实现采用length-1值(单个选择)的列表控件和采用length>1值(多个选择)的列表控件。
ListControls只接受序列值。有些控件只接受长度为0或1的序列(单选和单选择)。在这些情况下,如果len(sequence)>1,则会引发itemCounterRor。复选框和多重选择(具有“多重”HTML属性的)接受任意长度的序列。
注意以下错误:
control.value = some_value assert control.value == some_value # not necessarily true
这样做的原因是,value属性总是按照在HTML中列出的顺序给出列表项。
ListControl项也可以通过其标签而不是名称来引用。使用label参数to.get()和.set_value_by_label(),.get_value_by_label()方法。
请注意,虽然select控件以HTML表示,但它不是由select元素(其中包含选项元素,表示单个列表项)表示的,但复选框和收音机不是由 any 元素。相反,这些控件由一组输入元素表示。例如,这是一个名为“control1”的选择控件:
<select name="control1"> <option>foo</option> <option value="1">bar</option> </select>
这是一个名为“control2”的复选框控件:
<input type="checkbox" name="control2" value="foo" id="cbe1"> <input type="checkbox" name="control2" value="bar" id="cbe2">
复选框或Radio ListControl的ID属性始终是其第一个元素的ID属性(例如上面的“cbe1”)。
其他只读公共属性:多个。
- fixup()[源代码]¶
ListControls是在解析期间从组件列表项(也是ListControls)构建的。应在添加所有项之后调用此方法。参见
mechanize.ListControl
因为这是必需的。
- get(name=None, label=None, id=None, nr=None, exclude_disabled=False)[源代码]¶
按名称或标签返回项目,必要时用编号消除歧义。
所有参数都必须按名称传递,但“name”除外,它可以用作位置参数。
如果指定了名称,则该项必须具有指示的名称。
如果指定了标签,则项目必须具有一个标签,其空白压缩、剥离、文本子字符串与指示的标签字符串匹配(例如label=“please choose”will match“do please choose an item”)。
如果指定了ID,则该项必须具有指示的ID。
nr是与查询匹配的项的从0开始的可选索引。
如果nr是默认的无值,并且找到的项多于项,则会引发歧义错误。
如果找不到项,或者如果找到项但指定了nr但找不到,则引发itemNotFoundError。
可选排除禁用项。
- get_item_attrs(name, by_label=False, nr=None)[源代码]¶
返回单个ListControl项的HTML属性字典。
描述列表项的HTML元素类型为:选项用于选择控件,输入用于其余项。这些元素具有HTML属性,您可能偶尔想知道这些属性——例如,“alt”HTML属性提供了描述该项的文本字符串(图形浏览器通常将其显示为工具提示)。
返回的字典将HTML属性名称映射为值。名称和值取自原始HTML。
- get_items(name=None, label=None, id=None, exclude_disabled=False)[源代码]¶
按名称或标签返回匹配项。
有关参数文档,请参见.get()的docstring
- get_labels()¶
返回此控件的所有标签(标签实例)。
如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。
- pairs()¶
返回适合传递到URLENCODE的(键、值)对的列表。
- set(selected, name, by_label=False, nr=None)[源代码]¶
已弃用:给定名称或标签以及可选的消歧索引nr,将匹配项的选择设置为所选的bool值。
选择项遵循“get”方法的docstring中描述的行为。
如果该项被禁用,或者该控件被禁用或为只读,则引发attributeError。
- set_item_disabled(disabled, name, by_label=False, nr=None)[源代码]¶
在ListControl中设置已命名列表项的禁用状态。
- 参数:
disabled -- 布尔禁用状态
- set_single(selected, by_label=None)[源代码]¶
已弃用:设置此控件中单个项的选择。
如果控件不只包含一个项,则引发ItemCounterRor。
BY标签参数被忽略,并且只包括向后兼容性。
- set_value_by_label(value)[源代码]¶
按项目标签设置控件的值。
值应为应选择的项标签的子字符串的字符串的iterable。在执行子字符串匹配之前,原始标签文本将被空格压缩(连续空格字符转换为单个空格字符),并去除前导和尾随空格。不明确的标签:只要所有不明确的标签共享相同的项目名称(例如选项值),它就不会抱怨。
- class mechanize.RadioControl(type, name, attrs, select_default=False, index=None)[源代码]¶
基类:
ListControl
盖子:
输入/收音机
- fixup()[源代码]¶
ListControls是在解析期间从组件列表项(也是ListControls)构建的。应在添加所有项之后调用此方法。参见
mechanize.ListControl
因为这是必需的。
- get(name=None, label=None, id=None, nr=None, exclude_disabled=False)¶
按名称或标签返回项目,必要时用编号消除歧义。
所有参数都必须按名称传递,但“name”除外,它可以用作位置参数。
如果指定了名称,则该项必须具有指示的名称。
如果指定了标签,则项目必须具有一个标签,其空白压缩、剥离、文本子字符串与指示的标签字符串匹配(例如label=“please choose”will match“do please choose an item”)。
如果指定了ID,则该项必须具有指示的ID。
nr是与查询匹配的项的从0开始的可选索引。
如果nr是默认的无值,并且找到的项多于项,则会引发歧义错误。
如果找不到项,或者如果找到项但指定了nr但找不到,则引发itemNotFoundError。
可选排除禁用项。
- get_item_attrs(name, by_label=False, nr=None)¶
返回单个ListControl项的HTML属性字典。
描述列表项的HTML元素类型为:选项用于选择控件,输入用于其余项。这些元素具有HTML属性,您可能偶尔想知道这些属性——例如,“alt”HTML属性提供了描述该项的文本字符串(图形浏览器通常将其显示为工具提示)。
返回的字典将HTML属性名称映射为值。名称和值取自原始HTML。
- get_item_disabled(name, by_label=False, nr=None)¶
获取ListControl中已命名列表项的禁用状态。
- get_items(name=None, label=None, id=None, exclude_disabled=False)¶
按名称或标签返回匹配项。
有关参数文档,请参见.get()的docstring
- get_labels()[源代码]¶
返回此控件的所有标签(标签实例)。
如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。
- get_value_by_label()¶
返回由规范化标签指定的控件值。
- pairs()¶
返回适合传递到URLENCODE的(键、值)对的列表。
- possible_items(by_label=False)¶
已弃用:返回所有可能项的名称或标签。
包括禁用项,这可能会误导某些用例。
- set(selected, name, by_label=False, nr=None)¶
已弃用:给定名称或标签以及可选的消歧索引nr,将匹配项的选择设置为所选的bool值。
选择项遵循“get”方法的docstring中描述的行为。
如果该项被禁用,或者该控件被禁用或为只读,则引发attributeError。
- set_all_items_disabled(disabled)¶
设置ListControl中所有列表项的禁用状态。
- 参数:
disabled -- 布尔禁用状态
- set_item_disabled(disabled, name, by_label=False, nr=None)¶
在ListControl中设置已命名列表项的禁用状态。
- 参数:
disabled -- 布尔禁用状态
- set_single(selected, by_label=None)¶
已弃用:设置此控件中单个项的选择。
如果控件不只包含一个项,则引发ItemCounterRor。
BY标签参数被忽略,并且只包括向后兼容性。
- set_value_by_label(value)¶
按项目标签设置控件的值。
值应为应选择的项标签的子字符串的字符串的iterable。在执行子字符串匹配之前,原始标签文本将被空格压缩(连续空格字符转换为单个空格字符),并去除前导和尾随空格。不明确的标签:只要所有不明确的标签共享相同的项目名称(例如选项值),它就不会抱怨。
- toggle(name, by_label=False, nr=None)¶
已弃用:给定名称或标签和可选的消除歧义索引nr,切换匹配项的选择。
选择项遵循“get”方法的docstring中描述的行为。
如果该项被禁用,或者该控件被禁用或为只读,则引发attributeError。
- toggle_single(by_label=None)¶
已弃用:切换此控件中单个项的选择。
如果控件不只包含一个项,则引发ItemCounterRor。
BY标签参数被忽略,并且只包括向后兼容性。
- class mechanize.CheckboxControl(type, name, attrs, select_default=False, index=None)[源代码]¶
基类:
ListControl
盖子:
输入/复选框
- fixup()¶
ListControls是在解析期间从组件列表项(也是ListControls)构建的。应在添加所有项之后调用此方法。参见
mechanize.ListControl
因为这是必需的。
- get(name=None, label=None, id=None, nr=None, exclude_disabled=False)¶
按名称或标签返回项目,必要时用编号消除歧义。
所有参数都必须按名称传递,但“name”除外,它可以用作位置参数。
如果指定了名称,则该项必须具有指示的名称。
如果指定了标签,则项目必须具有一个标签,其空白压缩、剥离、文本子字符串与指示的标签字符串匹配(例如label=“please choose”will match“do please choose an item”)。
如果指定了ID,则该项必须具有指示的ID。
nr是与查询匹配的项的从0开始的可选索引。
如果nr是默认的无值,并且找到的项多于项,则会引发歧义错误。
如果找不到项,或者如果找到项但指定了nr但找不到,则引发itemNotFoundError。
可选排除禁用项。
- get_item_attrs(name, by_label=False, nr=None)¶
返回单个ListControl项的HTML属性字典。
描述列表项的HTML元素类型为:选项用于选择控件,输入用于其余项。这些元素具有HTML属性,您可能偶尔想知道这些属性——例如,“alt”HTML属性提供了描述该项的文本字符串(图形浏览器通常将其显示为工具提示)。
返回的字典将HTML属性名称映射为值。名称和值取自原始HTML。
- get_item_disabled(name, by_label=False, nr=None)¶
获取ListControl中已命名列表项的禁用状态。
- get_items(name=None, label=None, id=None, exclude_disabled=False)¶
按名称或标签返回匹配项。
有关参数文档,请参见.get()的docstring
- get_labels()[源代码]¶
返回此控件的所有标签(标签实例)。
如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。
- get_value_by_label()¶
返回由规范化标签指定的控件值。
- pairs()¶
返回适合传递到URLENCODE的(键、值)对的列表。
- possible_items(by_label=False)¶
已弃用:返回所有可能项的名称或标签。
包括禁用项,这可能会误导某些用例。
- set(selected, name, by_label=False, nr=None)¶
已弃用:给定名称或标签以及可选的消歧索引nr,将匹配项的选择设置为所选的bool值。
选择项遵循“get”方法的docstring中描述的行为。
如果该项被禁用,或者该控件被禁用或为只读,则引发attributeError。
- set_all_items_disabled(disabled)¶
设置ListControl中所有列表项的禁用状态。
- 参数:
disabled -- 布尔禁用状态
- set_item_disabled(disabled, name, by_label=False, nr=None)¶
在ListControl中设置已命名列表项的禁用状态。
- 参数:
disabled -- 布尔禁用状态
- set_single(selected, by_label=None)¶
已弃用:设置此控件中单个项的选择。
如果控件不只包含一个项,则引发ItemCounterRor。
BY标签参数被忽略,并且只包括向后兼容性。
- set_value_by_label(value)¶
按项目标签设置控件的值。
值应为应选择的项标签的子字符串的字符串的iterable。在执行子字符串匹配之前,原始标签文本将被空格压缩(连续空格字符转换为单个空格字符),并去除前导和尾随空格。不明确的标签:只要所有不明确的标签共享相同的项目名称(例如选项值),它就不会抱怨。
- toggle(name, by_label=False, nr=None)¶
已弃用:给定名称或标签和可选的消除歧义索引nr,切换匹配项的选择。
选择项遵循“get”方法的docstring中描述的行为。
如果该项被禁用,或者该控件被禁用或为只读,则引发attributeError。
- toggle_single(by_label=None)¶
已弃用:切换此控件中单个项的选择。
如果控件不只包含一个项,则引发ItemCounterRor。
BY标签参数被忽略,并且只包括向后兼容性。
- class mechanize.SelectControl(type, name, attrs, select_default=False, index=None)[源代码]¶
基类:
ListControl
盖子:
选择(和选项)
选项“values”(用HTML术语)是mechanize术语中的项“name”。
选择控件值和标签受一些混乱的默认规则的约束。例如,如果控件的HTML表示形式为::
<SELECT name=year> <OPTION value=0 label="2002">current year</OPTION> <OPTION value=1>2001</OPTION> <OPTION>2000</OPTION> </SELECT>
按顺序,这些项目有标签“2002”、“2001”和“2000”,而它们的名称(选项值)分别为“0”、“1”和“2000”。注意,本例中最后一个选项的值默认为其内容,如RFC1866所指定,第二个和第三个选项的标签也是如此。
选项标签有时比选项值更有意义,这可以使代码更易于维护。
附加只读公共属性:attrs
attrs属性是select元素原始HTML属性的字典。其他ListControls不具有此属性,因为在其他情况下,控件作为一个整体不对应于任何单个HTML元素。control.get(…)。
另一个特殊情况是item.attrs字典有一个特殊的键“contents”,它不对应于任何真正的html属性,而是包含选项元素的内容:
<OPTION>this bit</OPTION>
- fixup()[源代码]¶
ListControls是在解析期间从组件列表项(也是ListControls)构建的。应在添加所有项之后调用此方法。参见
mechanize.ListControl
因为这是必需的。
- get(name=None, label=None, id=None, nr=None, exclude_disabled=False)¶
按名称或标签返回项目,必要时用编号消除歧义。
所有参数都必须按名称传递,但“name”除外,它可以用作位置参数。
如果指定了名称,则该项必须具有指示的名称。
如果指定了标签,则项目必须具有一个标签,其空白压缩、剥离、文本子字符串与指示的标签字符串匹配(例如label=“please choose”will match“do please choose an item”)。
如果指定了ID,则该项必须具有指示的ID。
nr是与查询匹配的项的从0开始的可选索引。
如果nr是默认的无值,并且找到的项多于项,则会引发歧义错误。
如果找不到项,或者如果找到项但指定了nr但找不到,则引发itemNotFoundError。
可选排除禁用项。
- get_item_attrs(name, by_label=False, nr=None)¶
返回单个ListControl项的HTML属性字典。
描述列表项的HTML元素类型为:选项用于选择控件,输入用于其余项。这些元素具有HTML属性,您可能偶尔想知道这些属性——例如,“alt”HTML属性提供了描述该项的文本字符串(图形浏览器通常将其显示为工具提示)。
返回的字典将HTML属性名称映射为值。名称和值取自原始HTML。
- get_item_disabled(name, by_label=False, nr=None)¶
获取ListControl中已命名列表项的禁用状态。
- get_items(name=None, label=None, id=None, exclude_disabled=False)¶
按名称或标签返回匹配项。
有关参数文档,请参见.get()的docstring
- get_labels()¶
返回此控件的所有标签(标签实例)。
如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。
- get_value_by_label()¶
返回由规范化标签指定的控件值。
- pairs()¶
返回适合传递到URLENCODE的(键、值)对的列表。
- possible_items(by_label=False)¶
已弃用:返回所有可能项的名称或标签。
包括禁用项,这可能会误导某些用例。
- set(selected, name, by_label=False, nr=None)¶
已弃用:给定名称或标签以及可选的消歧索引nr,将匹配项的选择设置为所选的bool值。
选择项遵循“get”方法的docstring中描述的行为。
如果该项被禁用,或者该控件被禁用或为只读,则引发attributeError。
- set_all_items_disabled(disabled)¶
设置ListControl中所有列表项的禁用状态。
- 参数:
disabled -- 布尔禁用状态
- set_item_disabled(disabled, name, by_label=False, nr=None)¶
在ListControl中设置已命名列表项的禁用状态。
- 参数:
disabled -- 布尔禁用状态
- set_single(selected, by_label=None)¶
已弃用:设置此控件中单个项的选择。
如果控件不只包含一个项,则引发ItemCounterRor。
BY标签参数被忽略,并且只包括向后兼容性。
- set_value_by_label(value)¶
按项目标签设置控件的值。
值应为应选择的项标签的子字符串的字符串的iterable。在执行子字符串匹配之前,原始标签文本将被空格压缩(连续空格字符转换为单个空格字符),并去除前导和尾随空格。不明确的标签:只要所有不明确的标签共享相同的项目名称(例如选项值),它就不会抱怨。
- toggle(name, by_label=False, nr=None)¶
已弃用:给定名称或标签和可选的消除歧义索引nr,切换匹配项的选择。
选择项遵循“get”方法的docstring中描述的行为。
如果该项被禁用,或者该控件被禁用或为只读,则引发attributeError。
- toggle_single(by_label=None)¶
已弃用:切换此控件中单个项的选择。
如果控件不只包含一个项,则引发ItemCounterRor。
BY标签参数被忽略,并且只包括向后兼容性。