PagesBrowser.open and PagesBrowser.location always return a Response object
This commit is contained in:
parent
8292eadaee
commit
bf8675c88b
3 changed files with 27 additions and 21 deletions
|
|
@ -130,7 +130,7 @@ class AccountsPage(LoggedPage, HTMLPage):
|
||||||
self.env['id'] = id
|
self.env['id'] = id
|
||||||
|
|
||||||
# Handle real balances
|
# Handle real balances
|
||||||
page = self.page.browser.open(link)
|
page = self.page.browser.open(link).page
|
||||||
coming = page.find_amount(u"Opérations à venir")
|
coming = page.find_amount(u"Opérations à venir")
|
||||||
accounting = page.find_amount(u"Solde comptable")
|
accounting = page.find_amount(u"Solde comptable")
|
||||||
|
|
||||||
|
|
@ -242,7 +242,7 @@ class CardPage(OperationsPage, LoggedPage):
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
card_link = self.el.get('href')
|
card_link = self.el.get('href')
|
||||||
history_url = '%s/%s/fr/banque/%s' % (self.page.browser.BASEURL, self.page.browser.currentSubBank, card_link)
|
history_url = '%s/%s/fr/banque/%s' % (self.page.browser.BASEURL, self.page.browser.currentSubBank, card_link)
|
||||||
page = self.page.browser.location(history_url)
|
page = self.page.browser.location(history_url).page
|
||||||
|
|
||||||
for op in page.get_history():
|
for op in page.get_history():
|
||||||
yield op
|
yield op
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,14 @@ class BaseBrowser(object):
|
||||||
self.url = self.response.url
|
self.url = self.response.url
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def open(self, url, referrer=None, allow_redirects=True, **kwargs):
|
def open(self, url, referrer=None,
|
||||||
|
allow_redirects=True,
|
||||||
|
stream=None,
|
||||||
|
timeout=None,
|
||||||
|
verify=None,
|
||||||
|
cert=None,
|
||||||
|
proxies=None,
|
||||||
|
**kwargs):
|
||||||
"""
|
"""
|
||||||
Make an HTTP request like a browser does:
|
Make an HTTP request like a browser does:
|
||||||
* follow redirects (unless disabled)
|
* follow redirects (unless disabled)
|
||||||
|
|
@ -187,14 +194,17 @@ class BaseBrowser(object):
|
||||||
|
|
||||||
:rtype: :class:`requests.Response`
|
:rtype: :class:`requests.Response`
|
||||||
"""
|
"""
|
||||||
return self._open(url, referrer, allow_redirects, **kwargs)
|
|
||||||
|
|
||||||
def _open(self, url, referrer=None, allow_redirects=True, **kwargs):
|
|
||||||
req = self.build_request(url, referrer, **kwargs)
|
req = self.build_request(url, referrer, **kwargs)
|
||||||
preq = self.session.prepare_request(req)
|
preq = self.session.prepare_request(req)
|
||||||
|
|
||||||
# call python-requests
|
# call python-requests
|
||||||
response = self.session.send(preq, allow_redirects=allow_redirects)
|
response = self.session.send(preq,
|
||||||
|
allow_redirects=allow_redirects,
|
||||||
|
stream=stream,
|
||||||
|
timeout=timeout,
|
||||||
|
verify=verify,
|
||||||
|
cert=cert,
|
||||||
|
proxies=proxies)
|
||||||
|
|
||||||
if allow_redirects:
|
if allow_redirects:
|
||||||
response = self.handle_refresh(response)
|
response = self.handle_refresh(response)
|
||||||
|
|
@ -232,7 +242,7 @@ class BaseBrowser(object):
|
||||||
|
|
||||||
def handle_refresh(self, response):
|
def handle_refresh(self, response):
|
||||||
"""
|
"""
|
||||||
Called by _open, to handle Refresh HTTP header.
|
Called by open, to handle Refresh HTTP header.
|
||||||
|
|
||||||
It only redirect to the refresh URL if the sleep time is inferior to
|
It only redirect to the refresh URL if the sleep time is inferior to
|
||||||
REFRESH_MAX.
|
REFRESH_MAX.
|
||||||
|
|
@ -248,7 +258,7 @@ class BaseBrowser(object):
|
||||||
|
|
||||||
if sleep <= self.REFRESH_MAX:
|
if sleep <= self.REFRESH_MAX:
|
||||||
self.logger.debug('Refresh to %s' % url)
|
self.logger.debug('Refresh to %s' % url)
|
||||||
return self._open(url)
|
return self.open(url)
|
||||||
else:
|
else:
|
||||||
self.logger.debug('Do not refresh to %s because %s > REFRESH_MAX(%s)' % (url, sleep, self.REFRESH_MAX))
|
self.logger.debug('Do not refresh to %s because %s > REFRESH_MAX(%s)' % (url, sleep, self.REFRESH_MAX))
|
||||||
return response
|
return response
|
||||||
|
|
|
||||||
|
|
@ -162,15 +162,18 @@ class PagesBrowser(DomainBrowser):
|
||||||
|
|
||||||
def open(self, *args, **kwargs):
|
def open(self, *args, **kwargs):
|
||||||
response = super(PagesBrowser, self).open(*args, **kwargs)
|
response = super(PagesBrowser, self).open(*args, **kwargs)
|
||||||
|
response.page = None
|
||||||
|
|
||||||
# Try to handle the response page with an URL instance.
|
# Try to handle the response page with an URL instance.
|
||||||
for url in self._urls.itervalues():
|
for url in self._urls.itervalues():
|
||||||
page = url.handle(response)
|
page = url.handle(response)
|
||||||
if page is not None:
|
if page is not None:
|
||||||
self.logger.debug('Handle %s with %s' % (response.url, page.__class__.__name__))
|
self.logger.debug('Handle %s with %s' % (response.url, page.__class__.__name__))
|
||||||
return page
|
response.page = page
|
||||||
|
break
|
||||||
|
|
||||||
self.logger.debug('Unable to handle %s' % response.url)
|
if response.page is None:
|
||||||
|
self.logger.debug('Unable to handle %s' % response.url)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def location(self, *args, **kwargs):
|
def location(self, *args, **kwargs):
|
||||||
|
|
@ -178,24 +181,17 @@ class PagesBrowser(DomainBrowser):
|
||||||
# Call leave hook.
|
# Call leave hook.
|
||||||
self.page.on_leave()
|
self.page.on_leave()
|
||||||
|
|
||||||
page = self.open(*args, **kwargs)
|
response = self.open(*args, **kwargs)
|
||||||
|
|
||||||
# If open() returns a BasePage instance, store it as the current page.
|
|
||||||
if isinstance(page, BasePage):
|
|
||||||
response = page.response
|
|
||||||
self.page = page
|
|
||||||
else:
|
|
||||||
response = page
|
|
||||||
self.page = None
|
|
||||||
|
|
||||||
self.response = response
|
self.response = response
|
||||||
|
self.page = response.page
|
||||||
self.url = response.url
|
self.url = response.url
|
||||||
|
|
||||||
if self.page is not None:
|
if self.page is not None:
|
||||||
# Call load hook.
|
# Call load hook.
|
||||||
self.page.on_load()
|
self.page.on_load()
|
||||||
|
|
||||||
return page
|
return response
|
||||||
|
|
||||||
def pagination(self, func, *args, **kwargs):
|
def pagination(self, func, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue