2013-06-24 3 views
1

Я пытаюсь заполнить две формы и войти на сайт моих банков.Заполнение формы с помощью пароля Splinter

Я могу получить первую форму для ввода имени пользователя, но я не могу получить форму для заполнения пароля.

Вот код, я использую:

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) 

и это полный отслеживающий:

/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 

Я также попытался:

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

Как я могу получить форму пароля для fil?

ответ

8

Вот рабочий код:

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 
+8

Не особенно важно, как импорт *. Непонятно, откуда взялись имена. «Браузер» пришел из 'selenium' или из' splinter'? И если это произошло от «splinter», зачем беспокоиться об импорте «селена»? «Явный лучше, чем неявный». - Дзен Питона, Тим Петерс –

0

Не вдаваясь слишком глубоко в коде, и принимая быстрый взгляд на этот сайт (где идентификаторы изменились, я мог бы добавить), я бы сказал, вы, вероятно, добавлен дополнительный «#» в ваш вызов find_by_id ('# easnhbcc'). «#» - это типичный язык CSS для идентификатора, но вызов splinter find_by_id() не ожидает этого. либо

find_by_id('easnhbcc') 

или

find_by_css('#easnhbcc') 

бы, наверное, сделал трюк для вас.

1

Ошибка указывает на то, что вы пытаетесь заполнить список элементов. Вам нужно выбрать только один из элементов в списке. Вы, вероятно, хотите что-то вроде:

find_by_name('foo').first.fill() 
Смежные вопросы