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.SelectControlmechanize.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。

clear_all()[源代码]

清除窗体中所有控件的值属性。

mechanize.HTMLForm.clear()

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)[源代码]

切换已命名列表项的选定状态。

toggle_single(name=None, type=None, kind=None, id=None, nr=None, by_label=None, label=None)[源代码]

切换控件中只有一个项的列表项的所选状态。

剩下的就是 mechanize.HTMLForm.set_single()

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。

如果名称或值属性为“无”,或者值为空列表,或者如果控件被禁用,则该控件不成功。

公共属性:

变量:
  • type (str) -- 描述控件类型的字符串(有关允许的值,请参阅htmlform.type2类字典的键)(只读)

  • name (str) -- 控件名称(只读)

  • value -- 控制的当前值(子类可以允许单个值、一系列值,或者两者之一)

  • disabled (bool) -- 禁用状态

  • readonly (bool) -- 只读状态

  • id (str) -- id html属性值

get_labels()[源代码]

返回此控件的所有标签(标签实例)。

如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。

pairs()[源代码]

返回适合传递到URLENCODE的(键、值)对的列表。

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)[源代码]

基类:ScalarControl

文本输入控件。

包括HTML元素:输入/文本、输入/密码、输入/隐藏、文本区域

get_labels()

返回此控件的所有标签(标签实例)。

如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。

pairs()

返回适合传递到URLENCODE的(键、值)对的列表。

class mechanize.FileControl(type, name, attrs, index=None)[源代码]

基类:ScalarControl

文件上传,输入类型=文件。

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)[源代码]

基类:ScalarControl

我们不感兴趣的控制。

包括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_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.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标签参数被忽略,并且只包括向后兼容性。

class mechanize.SubmitControl(type, name, attrs, index=None)[源代码]

盖子:

输入/提交按钮/提交

成员:

继承的成员:

显示继承:

class mechanize.ImageControl(type, name, attrs, index=None)[源代码]

基类:SubmitControl

盖子:

输入/图像

坐标是使用htmlform之一指定的。单击*方法。

get_labels()

返回此控件的所有标签(标签实例)。

如果控件被一个<label>标记包围,则该标记将是第一个标签;所有由'for'和'id'连接的其他标签都将按HTML中显示的顺序排列。

pairs()

返回适合传递到URLENCODE的(键、值)对的列表。