机械化控件名称“无”

时间:2014-03-23 23:52:47

标签: python-2.7 mechanize

我正在尝试将表单上的控件从禁用的readonly设置为可用的东西。但问题是控制没有名称。我看到以前的帖子,其他人解决了这个问题。但我无法正确实施他们的解决方案。因为我是python的新手,所以我希望有人可以解释我做错了什么。

上一篇文章: Use mechanize to submit form without control name

这是我的代码:

import urllib2
from bs4 import BeautifulSoup
import cookielib
import urllib
import requests
import mechanize

# Log-in to wsj.com
cj = mechanize.CookieJar()
br = mechanize.Browser()
br.set_cookiejar(cj) 

br.set_handle_robots(False)

# The site we will navigate into, handling it's session
br.open('https://id.wsj.com/access/pages/wsj/us/login_standalone.html?mg=id-wsj')

# Select the first (index zero) form
br.select_form(nr=0)

# Returns None
forms = [f for f in br.forms()]
print forms[0].controls[6].name

# Returns set_value not defined
set_value(value,
      name=None, type=None, kind=None, id=None, nr=None,
      by_label=False,  # by_label is deprecated
      label=None)

forms[0].set_value("LOOK!!!! I SET THE VALUE OF THIS UNNAMED CONTROL!", 
                   nr=6)

control.readonly = False
control.disabled = True

1 个答案:

答案 0 :(得分:1)

您尝试设置的控件值实际上是一个按钮,提交按钮:

print [(control.name, control.type) for control in forms[0].controls]

打印:

[('landing_page', 'hidden'), 
 ('login_realm', 'hidden'), 
 ('login_template', 'hidden'), 
 ('username', 'text'), 
 ('password', 'password'), 
 ('savelogin', 'checkbox'), 
 (None, 'submit')]

而且,您无法使用set_value()作为提交按钮:

submit_button = forms[0].controls[6]
print submit_button.set_value('test')

结果:

AttributeError: SubmitControl instance has no attribute 'set_value'

希望有所帮助。