【问题标题】:No control matching name with Python Mechanize没有与 Python Mechanize 匹配的控件名称
【发布时间】:2016-07-20 11:16:37
【问题描述】:

目前正在使用 Mechanize 提交一些表单

这是我当前的 sn-p 代码:

add_control = br.form.find_control(name='CRN_IN', id='crn_id1')

一共有10个文本框,我用下面的代码打印出来:

for form in br.forms():                                                   
    print "Form name:", form.name                                         
    print form

这是输出:

  <TextControl(CRN_IN=)>
  <HiddenControl(assoc_term_in=) (readonly)>
  <HiddenControl(start_date_in=) (readonly)>
  <HiddenControl(end_date_in=) (readonly)>
  <HiddenControl(RSTS_IN=WR) (readonly)>

  <TextControl(CRN_IN=)>
  <HiddenControl(assoc_term_in=) (readonly)>
  <HiddenControl(start_date_in=) (readonly)>
  <HiddenControl(end_date_in=) (readonly)>
  <HiddenControl(RSTS_IN=WR) (readonly)>

  <TextControl(CRN_IN=)>
  <HiddenControl(assoc_term_in=) (readonly)>
  <HiddenControl(start_date_in=) (readonly)>
  <HiddenControl(end_date_in=) (readonly)>
  <HiddenControl(RSTS_IN=WR) (readonly)>

  <TextControl(CRN_IN=)>
  <HiddenControl(assoc_term_in=) (readonly)>
  <HiddenControl(start_date_in=) (readonly)>
  <HiddenControl(end_date_in=) (readonly)>
  <HiddenControl(RSTS_IN=WR) (readonly)>

  <TextControl(CRN_IN=)>
  <HiddenControl(assoc_term_in=) (readonly)>
  <HiddenControl(start_date_in=) (readonly)>
  <HiddenControl(end_date_in=) (readonly)>
  <HiddenControl(RSTS_IN=WR) (readonly)>

  <TextControl(CRN_IN=)>
  <HiddenControl(assoc_term_in=) (readonly)>
  <HiddenControl(start_date_in=) (readonly)>
  <HiddenControl(end_date_in=) (readonly)>
  <HiddenControl(RSTS_IN=WR) (readonly)>

  <TextControl(CRN_IN=)>
  <HiddenControl(assoc_term_in=) (readonly)>
  <HiddenControl(start_date_in=) (readonly)>
  <HiddenControl(end_date_in=) (readonly)>
  <HiddenControl(RSTS_IN=WR) (readonly)>

  <TextControl(CRN_IN=)>
  <HiddenControl(assoc_term_in=) (readonly)>
  <HiddenControl(start_date_in=) (readonly)>
  <HiddenControl(end_date_in=) (readonly)>
  <HiddenControl(RSTS_IN=WR) (readonly)>

  <TextControl(CRN_IN=)>
  <HiddenControl(assoc_term_in=) (readonly)>
  <HiddenControl(start_date_in=) (readonly)>
  <HiddenControl(end_date_in=) (readonly)>
  <HiddenControl(RSTS_IN=WR) (readonly)>

如我的 sn-p 代码所示,我可以使用 id='crn_id1' 选择 1 - 10 个文本框,一直到 id=crn_id10。但是,我的问题是,当我尝试以下操作时:

add_control = br.form.find_control(name='CRN_IN', id='crn_id1')
add_control['CRN_IN'] = '34688' # this indicates a CRN to submit
response = br.submit()

我收到以下错误:

Traceback (most recent call last):
  File "./add2.py", line 37, in <module>
    add_control['CRN_IN'] = '34688'
  File "/usr/local/lib/python2.7/site-packages/mechanize/_form.py", line 1212, in __getattr__
    (self.__class__.__name__, name))
AttributeError: TextControl instance has no attribute '__setitem__'

编辑:

.select_form() 添加到find_control 行后,出现以下错误:

Traceback (most recent call last):
  File "./add2.py", line 35, in <module>
    add_control = br.form.find_control(name='CRN_IN', id='crn_id1').select_form()
  File "/usr/local/lib/python2.7/site-packages/mechanize/_form.py", line 1212, in __getattr__
    (self.__class__.__name__, name))
AttributeError: TextControl instance has no attribute 'select_form'

【问题讨论】:

    标签: python forms submit mechanize


    【解决方案1】:

    只需添加:

    add_control.value = '33587'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多