Search code examples
pythonformspasswordswebdriversplinter

Filling a password form with Splinter


I'm trying to fill two forms and login to my banks website.

I can get the first form for the username to fill but I can't seem to get the form for the password to fill.

Here's the code I'm using:

from splinter import Browser

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

browser2 = Browser()
browser2.visit('http://mijn.ing.nl')

browser2.find_by_css('.firstfield').fill(username2)
browser2.find_by_id('#easnhbcc').fill(password2)

and this is the full traceback:

/usr/local/bin/python2 "/Users/narekaramjan/Dropbox/Python/Python 273/Test.py"
Traceback (most recent call last):
  File "/Users/narekaramjan/Dropbox/Python/Python 273/Test.py", line 26, in <module>
    browser2.find_by_id('#easnhbcc').fill(password2)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/splinter/element_list.py", line 73, in __getattr__
    self.__class__.__name__, name))
AttributeError: 'ElementList' object has no attribute 'fill'

Process finished with exit code 1

I have also tried:

browser2.find_by_name('easnhbcc').fill(password2)

How can I get the password form to fil?


Solution

  • Here is the working code:

    from splinter import Browser     
    
    # 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