From 4101ea9c3d236db8fce228cb154c1dde26210981 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 15 Sep 2012 11:04:49 +0200 Subject: [PATCH] handle error message when unable to login --- modules/societegenerale/browser.py | 12 +++++++++--- modules/societegenerale/pages/login.py | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/modules/societegenerale/browser.py b/modules/societegenerale/browser.py index cf4734d1..2e9d9a45 100644 --- a/modules/societegenerale/browser.py +++ b/modules/societegenerale/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword +from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword, BrowserUnavailable from .pages.accounts_list import AccountsList, AccountHistory from .pages.login import LoginPage, BadLoginPage @@ -61,10 +61,16 @@ class SocieteGenerale(BaseBrowser): self.page.login(self.username, self.password) - if self.is_on_page(LoginPage) or \ - self.is_on_page(BadLoginPage): + if self.is_on_page(LoginPage): raise BrowserIncorrectPassword() + if self.is_on_page(BadLoginPage): + error = self.page.get_error() + if error.startswith('Votre session a'): + raise BrowserUnavailable('Session has expired') + else: + raise BrowserIncorrectPassword(error) + def get_accounts_list(self): if not self.is_on_page(AccountsList): self.location('/restitution/cns_listeprestation.html') diff --git a/modules/societegenerale/pages/login.py b/modules/societegenerale/pages/login.py index ebe03726..54502bc4 100644 --- a/modules/societegenerale/pages/login.py +++ b/modules/societegenerale/pages/login.py @@ -85,4 +85,5 @@ class LoginPage(BasePage): class BadLoginPage(BasePage): - pass + def get_error(self): + return self.document.xpath('//span[@class="error_msg"]')[0].text.strip()