From e0dd263dbe68d3d3f13cbfcec4fae7410b32b27b Mon Sep 17 00:00:00 2001 From: Thibault Douge Date: Wed, 30 Dec 2020 16:57:22 +0100 Subject: [PATCH] [freemobile] raise an error if we can't go on the offer page --- modules/freemobile/browser.py | 15 ++++++++++++--- modules/freemobile/pages.py | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/freemobile/browser.py b/modules/freemobile/browser.py index f6a4faa38a..e62c600114 100644 --- a/modules/freemobile/browser.py +++ b/modules/freemobile/browser.py @@ -19,11 +19,13 @@ # You should have received a copy of the GNU Lesser General Public License # along with this weboob module. If not, see . +from __future__ import unicode_literals + import itertools from weboob.browser import LoginBrowser, URL, need_login from weboob.capabilities.messages import CantSendMessage -from weboob.exceptions import BrowserIncorrectPassword +from weboob.exceptions import BrowserIncorrectPassword, BrowserUnavailable from .pages import LoginPage, BillsPage, ProfilePage, PdfPage, OfferPage, OptionsPage @@ -61,8 +63,15 @@ def do_logout(self): @need_login def iter_subscription(self): - offerpage = self.offerpage.stay_or_go() - subscriptions = itertools.chain([offerpage.get_first_subscription()], offerpage.iter_next_subscription()) + self.offerpage.stay_or_go() + if self.login_page.is_here(): + error = self.page.get_error() + if 'Vous ne pouvez pas avoir accès à cette page' in error: + raise BrowserUnavailable(error) + elif error: + raise AssertionError('Unexpected error at subscription: %s' % error) + + subscriptions = itertools.chain([self.page.get_first_subscription()], self.page.iter_next_subscription()) for subscription in subscriptions: self.login_page.go(params={"switch-user": subscription._userid}) diff --git a/modules/freemobile/pages.py b/modules/freemobile/pages.py index 6743275d77..48fa925507 100644 --- a/modules/freemobile/pages.py +++ b/modules/freemobile/pages.py @@ -39,7 +39,7 @@ def login(self, login, password): form.submit() def get_error(self): - return CleanText('//div[@class="flash flash-error"]')(self.doc) + return CleanText('//div[has-class("flash")]')(self.doc) class BillsPage(LoggedPage, HTMLPage): -- GitLab