feat(browser sessions): Collect XHR requests done while loading the page
Solves #159
This commit is contained in:
@@ -139,9 +139,17 @@ class DynamicSession(SyncSession, DynamicSessionMixin):
|
||||
with self._page_generator(
|
||||
params.timeout, params.extra_headers, params.disable_resources, proxy, params.blocked_domains
|
||||
) as page_info:
|
||||
final_response = [None]
|
||||
final_response, xhr_captured = [None], []
|
||||
page = page_info.page
|
||||
page.on("response", self._create_response_handler(page_info, final_response))
|
||||
page.on(
|
||||
"response",
|
||||
self._create_response_handler(
|
||||
page_info,
|
||||
final_response,
|
||||
xhr_pattern=self._config.capture_xhr,
|
||||
xhr_container=xhr_captured,
|
||||
),
|
||||
)
|
||||
|
||||
try:
|
||||
first_response = page.goto(url, referer=referer)
|
||||
@@ -167,7 +175,12 @@ class DynamicSession(SyncSession, DynamicSessionMixin):
|
||||
page.wait_for_timeout(params.wait)
|
||||
|
||||
response = ResponseFactory.from_playwright_response(
|
||||
page, first_response, final_response[0], params.selector_config, meta={"proxy": proxy}
|
||||
page,
|
||||
first_response,
|
||||
final_response[0],
|
||||
params.selector_config,
|
||||
meta={"proxy": proxy},
|
||||
xhr_captured=xhr_captured,
|
||||
)
|
||||
return response
|
||||
|
||||
@@ -306,9 +319,17 @@ class AsyncDynamicSession(AsyncSession, DynamicSessionMixin):
|
||||
async with self._page_generator(
|
||||
params.timeout, params.extra_headers, params.disable_resources, proxy, params.blocked_domains
|
||||
) as page_info:
|
||||
final_response = [None]
|
||||
final_response, xhr_captured = [None], []
|
||||
page = page_info.page
|
||||
page.on("response", self._create_response_handler(page_info, final_response))
|
||||
page.on(
|
||||
"response",
|
||||
self._create_response_handler(
|
||||
page_info,
|
||||
final_response,
|
||||
xhr_pattern=self._config.capture_xhr,
|
||||
xhr_container=xhr_captured,
|
||||
),
|
||||
)
|
||||
|
||||
try:
|
||||
first_response = await page.goto(url, referer=referer)
|
||||
@@ -334,7 +355,12 @@ class AsyncDynamicSession(AsyncSession, DynamicSessionMixin):
|
||||
await page.wait_for_timeout(params.wait)
|
||||
|
||||
response = await ResponseFactory.from_async_playwright_response(
|
||||
page, first_response, final_response[0], params.selector_config, meta={"proxy": proxy}
|
||||
page,
|
||||
first_response,
|
||||
final_response[0],
|
||||
params.selector_config,
|
||||
meta={"proxy": proxy},
|
||||
xhr_captured=xhr_captured,
|
||||
)
|
||||
return response
|
||||
|
||||
|
||||
Reference in New Issue
Block a user