From 30c861fbde48dc310276128c96a064aeddfdec80 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 31 Mar 2018 14:32:26 +0200 Subject: [PATCH] societegenerale: skip GDPR form and fix add recipients On login, there is a form to ask user validating GDPR questions. It can be skipped by calling a specific URL. Also, the link to add a recipient was broken. To prevent eventual compatibility break, the old XPath is kept. NOTE: I CAN'T TEST REAL RECIPIENT ADD OR TRANSFERS, SO PERHAPS IT IS STILL BROKEN LATER IN THE PROCESS. --- modules/societegenerale/pages/accounts_list.py | 2 ++ modules/societegenerale/pages/base.py | 4 ++++ modules/societegenerale/pages/transfer.py | 12 ++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/modules/societegenerale/pages/accounts_list.py b/modules/societegenerale/pages/accounts_list.py index a197511c9e..4acb1505f3 100644 --- a/modules/societegenerale/pages/accounts_list.py +++ b/modules/societegenerale/pages/accounts_list.py @@ -187,6 +187,8 @@ def is_here(self): not bool(Link('//a[contains(@href, "per_cptBen_ajouterFrBic")]', default=NotAvailable)(self.doc)) def on_load(self): + super(AccountHistory, self).on_load() + msg = CleanText('//span[@class="error_msg"]', default='')(self.doc) if 'Le service est momentanément indisponible' in msg: raise BrowserUnavailable(msg) diff --git a/modules/societegenerale/pages/base.py b/modules/societegenerale/pages/base.py index e8ac49e2d3..966a7f138f 100644 --- a/modules/societegenerale/pages/base.py +++ b/modules/societegenerale/pages/base.py @@ -27,6 +27,10 @@ class BasePage(HTMLPage): + def on_load(self): + if self.doc.xpath('//script[contains(text(), "gdpr/recueil")]'): + self.browser.open('https://particuliers.secure.societegenerale.fr/icd/gdpr/data/gdpr-update-compteur-clicks-client.json') + def get_error(self): try: return self.doc.xpath('//span[@class="error_msg"]')[0].text.strip() diff --git a/modules/societegenerale/pages/transfer.py b/modules/societegenerale/pages/transfer.py index 1e2b89813f..0405c8a8d4 100644 --- a/modules/societegenerale/pages/transfer.py +++ b/modules/societegenerale/pages/transfer.py @@ -33,7 +33,7 @@ from weboob.capabilities.base import find_object, NotAvailable, empty from weboob.browser.filters.standard import CleanText, Regexp, CleanDecimal, \ Env, Date -from weboob.browser.filters.html import Attr, Link +from weboob.browser.filters.html import Attr, Link, XPathNotFound from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.capabilities.bank.iban import is_iban_valid from weboob.tools.value import Value, ValueBool @@ -78,7 +78,15 @@ def is_here(self): not bool(CleanText(u'//h1[contains(text(), "Ajouter un compte bénéficiaire de virement")]')(self.doc)) def get_add_recipient_link(self): - return Regexp(Link('//a[img[@src="/img/personnalisation/btn_ajouter_beneficiaire.jpg"]]'), 'javascript:window.location="([^"]+)"')(self.doc) + try: + link = Regexp(Link('//a[img[@src="/img/personnalisation/btn_ajouter_beneficiaire.jpg"]]'), 'javascript:window.location="([^"]+)"')(self.doc) + except XPathNotFound: + link = Regexp(Link(u'//a[contains(text(), "Ajouter un compte b")]'), 'javascript:window.location="([^"]+)"')(self.doc) + else: + # XXX check in logs if this message is visible. If not, we can remove the first xpath. + self.logger.debug('Old link found to add a recipient.') + + return link def on_load(self): excluded_errors = [ -- GitLab