From 4fe8f13984710f448f94a9ec63edcbd8c6e9f404 Mon Sep 17 00:00:00 2001 From: Florent Date: Fri, 4 May 2012 15:00:37 +0200 Subject: [PATCH] Catch error on password/birthday/login as BrowserIncorrectPassword --- modules/ing/browser.py | 4 +++- modules/ing/pages/login.py | 13 +++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/modules/ing/browser.py b/modules/ing/browser.py index e65b0406..6c6a35aa 100644 --- a/modules/ing/browser.py +++ b/modules/ing/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import BaseBrowser +from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword from .pages import AccountsList, LoginPage, LoginPage2, \ AccountHistory @@ -60,6 +60,8 @@ class Ing(BaseBrowser): self.page.prelogin(self.username, self.birthday) self.page.login(self.password) + if self.page.error(): + raise BrowserIncorrectPassword() def get_accounts_list(self): if not self.is_on_page(AccountsList): diff --git a/modules/ing/pages/login.py b/modules/ing/pages/login.py index 932cb654..df59cba9 100644 --- a/modules/ing/pages/login.py +++ b/modules/ing/pages/login.py @@ -22,7 +22,7 @@ import re from weboob.tools.mech import ClientForm 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 import tempfile @@ -46,9 +46,10 @@ class INGVirtKeyboard(VirtKeyboard): def __init__(self, basepage): divkeyboard = basepage.document.find("//div[@id='clavierdisplayLogin']") - img = divkeyboard.xpath("img")[1] - if img is None: - return False + try: + img = divkeyboard.xpath("img")[1] + except: + raise BrowserIncorrectPassword() url = img.attrib.get("src") coords = {} coords["11"] = (5, 5, 33, 33) @@ -101,6 +102,10 @@ class LoginPage(BasePage): self.browser['zone1Form:radioSaveClientNumber'] = False self.browser.submit(nologin=True) + def error(self): + error = self.document.find('//span[@class="error"]') + return error is not None + class LoginPage2(BasePage): def on_loaded(self):