diff --git a/modules/bnporc/pp/browser.py b/modules/bnporc/pp/browser.py index 10376bf7d16b03b82a31ce14a1a95c1eba74864e..7157d5f09af80c5da12c1d8a3290efb086cec5cc 100644 --- a/modules/bnporc/pp/browser.py +++ b/modules/bnporc/pp/browser.py @@ -41,7 +41,7 @@ from weboob.browser.elements import DataError from weboob.exceptions import ( BrowserIncorrectPassword, BrowserUnavailable, AppValidation, - AppValidationExpired, + AppValidationExpired, ActionNeeded, ) from weboob.tools.value import Value from weboob.tools.capabilities.bank.investments import create_french_liquidity @@ -53,7 +53,7 @@ MarketListPage, MarketPage, MarketHistoryPage, MarketSynPage, BNPKeyboard, RecipientsPage, ValidateTransferPage, RegisterTransferPage, AdvisorPage, AddRecipPage, ActivateRecipPage, ProfilePage, ListDetailCardPage, ListErrorPage, - UselessPage, TransferAssertionError, LoanDetailsPage, TransfersPage, + UselessPage, TransferAssertionError, LoanDetailsPage, TransfersPage, OTPPage, ) from .document_pages import DocumentsPage, DocumentsResearchPage, TitulairePage, RIBPage @@ -76,6 +76,7 @@ class BNPParibasBrowser(LoginBrowser, StatesMixin): ) useless_page = URL(r'/fr/connexion/comptes-et-contrats', UselessPage) + otp = URL(r'/fr/espace-prive/authentification-forte-anr', OTPPage) con_threshold = URL( r'/fr/connexion/100-connexions', @@ -205,6 +206,10 @@ def iter_accounts(self): self.ibans.go() if not self.ibans.is_here(): self.ibans.go() + + if self.otp.is_here(): + raise ActionNeeded("Veuillez réaliser l'authentification forte depuis votre navigateur.") + ibans = self.page.get_ibans_dict() # This page might be unavailable. try: diff --git a/modules/bnporc/pp/pages.py b/modules/bnporc/pp/pages.py index 1d0f6d0af0c0121799259c805c3cc1146ab95d87..2a53d9aeeefc1878666e2411cc172c8ab34a730d 100644 --- a/modules/bnporc/pp/pages.py +++ b/modules/bnporc/pp/pages.py @@ -282,6 +282,10 @@ def login(self, username, password): self.browser.switch('banqueprivee.mabanque') +class OTPPage(HTMLPage): + pass + + class BNPPage(LoggedPage, JsonPage): def build_doc(self, text): try: