diff --git a/modules/s2e/browser.py b/modules/s2e/browser.py index c483ad1c2bb07db638240ee5d7fa0217ac628b23..005518d85001a7acf330d7270779f473b7321f18 100644 --- a/modules/s2e/browser.py +++ b/modules/s2e/browser.py @@ -418,11 +418,24 @@ def get_profile(self): @need_login def iter_documents(self): - self.e_service_page.go(slug=self.SLUG) + try: + self.e_service_page.go(slug=self.SLUG) + except ReadTimeoutError: + raise BrowserUnavailable() + # we might land on the documents page, but sometimes we land on user info "tab" self.page.select_documents_tab() self.page.show_more() + # Sometimes, this page can return an error + # Seen messages: + # - Impossible de récupérer les relevés électroniques + # - Le document souhaité n'a pu être généré (délai d'attente dépassé). + # Merci de renouveler votre demande ultérieurement. + error = self.page.get_error_message() + if error: + raise BrowserUnavailable(error) + # Sometimes two documents have the same ID (same date and same type) existing_id = set() for document in self.page.iter_documents(): diff --git a/modules/s2e/pages.py b/modules/s2e/pages.py index 6902953355e9ffa7b018f9a42849d9ee8a1dafb9..fb41fc630b326adb1b33f32ac72e9e407356d6e4 100644 --- a/modules/s2e/pages.py +++ b/modules/s2e/pages.py @@ -1251,6 +1251,9 @@ def show_more(self): self.logger.debug('showing all documents') form.submit() + def get_error_message(self): + return CleanText('//span[@class="operation-bloc-content-message-erreur-text"]')(self.doc) + @method class iter_documents(TableElement): # Note: on this (partial) page, 'head' and 'items' are actually two different HTML tables.