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()
Author by
narzero
Updated on June 28, 2022Comments
-
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 over 10 yearsDon't perticularly like the * imports... It makes it unclear where names come from. Did
Browser
come fromselenium
or fromsplinter
? And if it came fromsplinter
, why bother with theselenium
import? "Explicit is better than implicit." -- The Zen of Python, by Tim Peters