PagesBrowser.open and PagesBrowser.location always return a Response object

This commit is contained in:
Romain Bignon 2014-03-13 21:24:35 +01:00
commit bf8675c88b
3 changed files with 27 additions and 21 deletions

View file

@ -162,15 +162,18 @@ class PagesBrowser(DomainBrowser):
def open(self, *args, **kwargs):
response = super(PagesBrowser, self).open(*args, **kwargs)
response.page = None
# Try to handle the response page with an URL instance.
for url in self._urls.itervalues():
page = url.handle(response)
if page is not None:
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
def location(self, *args, **kwargs):
@ -178,24 +181,17 @@ class PagesBrowser(DomainBrowser):
# Call leave hook.
self.page.on_leave()
page = 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
response = self.open(*args, **kwargs)
self.response = response
self.page = response.page
self.url = response.url
if self.page is not None:
# Call load hook.
self.page.on_load()
return page
return response
def pagination(self, func, *args, **kwargs):
"""