diff --git a/modules/banquepopulaire/browser.py b/modules/banquepopulaire/browser.py index f744335e6e8724b8f02b968f3890795da784e9d5..c67926655d47029661bd345d072e2c419a142d38 100644 --- a/modules/banquepopulaire/browser.py +++ b/modules/banquepopulaire/browser.py @@ -48,7 +48,7 @@ LineboursePage, AlreadyLoginPage, InvestmentPage, NewLoginPage, JsFilePage, AuthorizePage, LoginTokensPage, VkImagePage, AuthenticationMethodPage, AuthenticationStepPage, CaissedepargneVirtKeyboard, - AccountsNextPage, GenericAccountsPage, InfoTokensPage, + AccountsNextPage, GenericAccountsPage, InfoTokensPage, NatixisUnavailablePage, ) from .document_pages import BasicTokenPage, SubscriberPage, SubscriptionsPage, DocumentsPage from .linebourse_browser import LinebourseAPIBrowser @@ -237,6 +237,10 @@ class BanquePopulaire(LoginBrowser): r'https://www.assurances.natixis.fr/etna-ihs-bp/#/equipement;codeEtab=.*\?windowId=.*', NatixisErrorPage ) + natixis_unavailable_page = URL( + r'https://www.assurances.natixis.fr/espaceinternet-bp/page500.xhtml', + NatixisUnavailablePage + ) natixis_invest = URL( r'https://www.assurances.natixis.fr/espaceinternet-bp/rest/v2/contratVie/load/(?P\w+)/(?P\w+)/(?P\w+)', NatixisInvestPage @@ -936,6 +940,8 @@ def get_invest_history(self, account): except ServerError: return else: + if self.natixis_unavailable_page.is_here(): + raise BrowserUnavailable(self.page.get_message()) history = list(self.page.get_history()) history.sort(reverse=True, key=lambda item: item.date) for tr in history: diff --git a/modules/banquepopulaire/pages.py b/modules/banquepopulaire/pages.py index 34a824213e7c9eab5947c04a82e848d6396d8099..d6071058c451f9a5281139a0d47b07c3c71286f6 100644 --- a/modules/banquepopulaire/pages.py +++ b/modules/banquepopulaire/pages.py @@ -1274,6 +1274,11 @@ class NatixisErrorPage(LoggedPage, HTMLPage): pass +class NatixisUnavailablePage(LoggedPage, HTMLPage): + def get_message(self): + return CleanText('//label')(self.doc) + + class IbanPage(LoggedPage, MyHTMLPage): def need_to_go(self): return len(self.doc.xpath('//div[@class="grid"]/div/span[contains(text(), "IBAN")]')) == 0