Filling a password form with Splinter

11,161

Solution 1

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

Solution 2

The error indicates that you are trying to fill a list of elements. You need to select just one of the elements in the list. You probably want something like:

find_by_name('foo').first.fill()
Share:
11,161
narzero
Author by

narzero

Updated on June 28, 2022

Comments

  • narzero
    narzero almost 2 years

    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?

  • Chris Wesseling
    Chris Wesseling over 10 years
    Don't perticularly like the * imports... It makes it unclear where names come from. Did Browser come from selenium or from splinter? And if it came from splinter, why bother with the selenium import? "Explicit is better than implicit." -- The Zen of Python, by Tim Peters