Catch error on password/birthday/login as BrowserIncorrectPassword

This commit is contained in:
Florent 2012-05-04 15:00:37 +02:00
commit 4fe8f13984
2 changed files with 12 additions and 5 deletions

View file

@ -18,7 +18,7 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>. # along with weboob. If not, see <http://www.gnu.org/licenses/>.
from weboob.tools.browser import BaseBrowser from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword
from .pages import AccountsList, LoginPage, LoginPage2, \ from .pages import AccountsList, LoginPage, LoginPage2, \
AccountHistory AccountHistory
@ -60,6 +60,8 @@ class Ing(BaseBrowser):
self.page.prelogin(self.username, self.birthday) self.page.prelogin(self.username, self.birthday)
self.page.login(self.password) self.page.login(self.password)
if self.page.error():
raise BrowserIncorrectPassword()
def get_accounts_list(self): def get_accounts_list(self):
if not self.is_on_page(AccountsList): if not self.is_on_page(AccountsList):

View file

@ -22,7 +22,7 @@ import re
from weboob.tools.mech import ClientForm from weboob.tools.mech import ClientForm
from logging import error from logging import error
from weboob.tools.browser import BasePage from weboob.tools.browser import BasePage, BrowserIncorrectPassword
from weboob.tools.captcha.virtkeyboard import VirtKeyboard, VirtKeyboardError from weboob.tools.captcha.virtkeyboard import VirtKeyboard, VirtKeyboardError
import tempfile import tempfile
@ -46,9 +46,10 @@ class INGVirtKeyboard(VirtKeyboard):
def __init__(self, basepage): def __init__(self, basepage):
divkeyboard = basepage.document.find("//div[@id='clavierdisplayLogin']") divkeyboard = basepage.document.find("//div[@id='clavierdisplayLogin']")
img = divkeyboard.xpath("img")[1] try:
if img is None: img = divkeyboard.xpath("img")[1]
return False except:
raise BrowserIncorrectPassword()
url = img.attrib.get("src") url = img.attrib.get("src")
coords = {} coords = {}
coords["11"] = (5, 5, 33, 33) coords["11"] = (5, 5, 33, 33)
@ -101,6 +102,10 @@ class LoginPage(BasePage):
self.browser['zone1Form:radioSaveClientNumber'] = False self.browser['zone1Form:radioSaveClientNumber'] = False
self.browser.submit(nologin=True) self.browser.submit(nologin=True)
def error(self):
error = self.document.find('//span[@class="error"]')
return error is not None
class LoginPage2(BasePage): class LoginPage2(BasePage):
def on_loaded(self): def on_loaded(self):