0

オンライン銀行口座にログインして、取引履歴を印刷したい。

Splinterと呼ばれる機械化の代替手段を使用しています。これは、はるかに使いやすく、より明確に文書化されているためです。

私が書いたコードでは、パスワード フォームに入力しようとするとエラーが発生します。パスワード フォーム フィールドを正しく識別できないようです。「name=」属性や css クラス属性がないためです。

コードは次のとおりです。

username2 = '***'
password2 = '***'

browser2 = Browser()
browser2.visit('https://mijn.ing.nl/internetbankieren/SesamLoginServlet')
browser2.find_by_css('.firstfield').fill(username2)
browser2.find_by_id('#ewyeszipl').fill(password2)
browser2.click_link_by_text('Inloggen')

url2 = browser2.url
title2 = browser2.title

titlecheck2 = 'Mijn ING Overzicht  - Mijn ING'

print "Stap 2 (Mijn ING):"

if title2 == titlecheck2:
    print('Succeeded')

    print 'The source is:'
    print browser2.html

    browser2.quit()

else:
    print('Failed')

    browser2.quit()

完全なトレースバック:

/Library/Frameworks/Python.framework/Versions/2.7/bin/python "/Users/*/Dropbox/Python/Test environment 2.7.3/Splinter.py"
Traceback (most recent call last):
  File "/Users/*/Dropbox/Python/Test environment 2.7.3/Splinter.py", line 45, in <module>
    browser2.find_by_id('#ewyeszipl').fill_form(password2)
  File "/Users/*/Library/Python/2.7/lib/python/site-packages/splinter/element_list.py", line 73, in __getattr__
    self.__class__.__name__, name))
AttributeError: 'ElementList' object has no attribute 'fill_form'

Process finished with exit code 1
4

2 に答える 2

2

Miklos の助けを借りて問題が解決しました。

作業コードは次のとおりです。

from splinter import *     

# Define the username and password
username2 = '***'
password2 = '***'

# Choose the browser (default is Firefox)
browser2 = Browser()

# Fill in the url
browser2.visit('https://mijn.ing.nl/internetbankieren/SesamLoginServlet')

# Find the username form and fill it with the defined username
browser2.find_by_id('gebruikersnaam').first.find_by_tag('input').fill(username2)

# Find the password form and fill it with the defined password
browser2.find_by_id('wachtwoord').first.find_by_tag('input').fill(password2)

# Find the submit button and click
browser2.find_by_css('.submit').first.click()

# Print the current url
print browser2.url

# Print the current browser title
print browser2.title

# Print the current html source code
print browser2.html
于 2013-06-25T12:56:06.573 に答える
1

Splinter のドキュメントによると、検索メソッドを連鎖させることができます。これを試すことをお勧めします(自分でテストできませんでした!):

browser2.find_by_id('gebruikersnaam').first.find_by_tag('input').fill(username2)
browser2.find_by_id('wachtwoord').first.find_by_tag('input').fill(password2)

.firstfieldCSS クラスで見つけられる場合でも、ユーザー名の入力フィールドを見つけるように命令を変更したことに注意してください。含まれている div を最初に選択してから、そこで入力フィールドを探すと、少しすっきり/きれいに見えると思います。

于 2013-06-25T11:47:58.457 に答える