diff --git a/modules/s2e/browser.py b/modules/s2e/browser.py index 3737b6f2cdbbc5cff6174b7d6839d570ba95bf5f..fe6d5d419b1ec1228e72a1b129aa14cd992014af 100644 --- a/modules/s2e/browser.py +++ b/modules/s2e/browser.py @@ -285,6 +285,8 @@ def get_profile(self): @need_login def iter_documents(self): self.e_service_page.stay_or_go(slug=self.SLUG) + # we might land on the documents page, but sometimes we land on user info "tab" + self.page.select_documents_tab() self.page.show_more() return self.page.iter_documents() diff --git a/modules/s2e/pages.py b/modules/s2e/pages.py index ec105c15616d5397ab1a0949ebbd625fa9f522f4..b0cc121abc6f133232492ce1dd1179ace48c992a 100644 --- a/modules/s2e/pages.py +++ b/modules/s2e/pages.py @@ -898,6 +898,32 @@ def obj_performance_history(self): class EServicePage(LoggedPage, HTMLPage): + def select_documents_tab(self): + # force lowercase, it's not always the same case + # and label to search for depends on child module + edoc_td_xpath = '//td[matches(lower-case(text()),"e-documents|mes relevés|mes e-relevés|services en ligne")]' + try: + form = self.get_form(xpath=edoc_td_xpath + '/ancestor::form') + except FormNotFound: + self.logger.debug('no e-documents link, maybe we are already there') + return + + doc_tab_id = (self.doc.xpath(edoc_td_xpath + '/ancestor::td/@id')[0]) + # warning: lxml returns its special string type which is incompatible with "re" + assert re.search(':header:', doc_tab_id) + form_tab = re.sub(':header:.*', '', doc_tab_id) + + for k, v in form.items(): + if v == 'coordPerso': + form[k] = 'eService' + break + + form['javax.faces.source'] = form_tab + form['javax.faces.partial.event'] = 'click' + form['javax.faces.partial.execute'] = '%s @component' % form_tab + form['org.richfaces.ajax.component'] = form_tab + self.logger.debug('selecting e-documents tab') + form.submit() def show_more(self): form = self.get_form(xpath='//div[@id="gestion"]//form')