0

ログインテキストボックスが見つかりません。フォームを選択できますが、入力テキストが見つかりません。誰かが私を助けることができますか?

http://www.safilonet.safilo.com/でこのスクリプトを使用して自動的にログインしようとしています。 ありがとうございます

コードとエラーメッセージは次のとおりです。

def login(self):
url = self._baseUrl + '/webapp/commerce/safilo/jsp/logon.jsp?lng=E&cpy=10'
self._br.open(url, timeout=30.0)
self._br.select_form(name='logon') 
print 'entrou'
self._br.form['login'] = self._username
self._br.form['password'] = self._password
self._br.submit()

if self._verbose: print 'Login successful.\n'

self.last_logged_in = datetime.datetime.now()

エラーメッセージ:

Traceback (most recent call last):
File "E:\billy\Projects\GlassInteg\trunk\src\run.py", line 90, in <module> go()
File "E:\billy\Projects\GlassInteg\trunk\src\run.py", line 39, in go ss = SafiloSupplier(updateBrands=True)
File "E:\billy\Projects\GlassInteg\trunk\src\GlassInteg\Supplier.py", line 283, in __init__
if login: self.login()
File "E:\billy\Projects\GlassInteg\trunk\src\GlassInteg\Supplier.py", line 307, in login
self._br.form['login'] = self._username
File "build\bdist.win32\egg\mechanize\_form.py", line 2780, in __setitem__
File "build\bdist.win32\egg\mechanize\_form.py", line 3101, in find_control
File "build\bdist.win32\egg\mechanize\_form.py", line 3185, in _find_control

mechanize._form.ControlNotFoundError:名前に一致するコントロールがありません'login'

4

1 に答える 1

0

W3C バリデータによると、問題のページに無効な HTML が多数含まれていることが問題のようです。

ご覧のとおり、mechanize は「ログイン」フィールドを表示できません。

>>> from mechanize import Browser
>>> br = Browser()
>>> br.open('http://www.safilonet.safilo.com/webapp/commerce/safilo/jsp/logon.jsp?lng=E&cpy=10')
<response_seek_wrapper at 0x1011cc638 whose wrapped object = <closeable_response at 0x1011cc488 whose fp = <socket._fileobject object at 0x1002bd650>>>
>>> br.select_form('logon')
>>> br._pairs()
[('merchant', '23888'), ('lng', 'E'), ('cpy', '10'), ('rightPageURL', 'http://www.safilonet.safilo.com/webapp/commerce/catalog/home.html'), ('password', '')]

このページを管理できる場合は、できるだけ早く HTML を修正してください。

ただし、そうではないと思いますので、いくつかの代替オプションを次に示します。

  • セレンを使う
  • 直接の POST URL を使用してログインを試みます (mechanize がこれをサポートしているかどうかは不明です)。
于 2012-10-12T13:48:54.327 に答える