From 1cc168ba113af3336c71d3e4afdf23d6c15274b1 Mon Sep 17 00:00:00 2001 From: Martin Lavoie Date: Mon, 21 Jun 2021 11:42:41 +0200 Subject: [PATCH] [s2e] BrowserUnavailable when listing documents Two situations: - the request timeout - the page returns an error --- modules/s2e/browser.py | 15 ++++++++++++++- modules/s2e/pages.py | 3 +++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/s2e/browser.py b/modules/s2e/browser.py index c483ad1c2b..005518d850 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 6902953355..fb41fc630b 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. -- GitLab