Add EnableResponseCallback
This commit is contained in:
parent
2be4dd3053
commit
5b041b19e5
|
|
@ -15,10 +15,19 @@ public class PageActionArgs
|
|||
/// This value has to be set to true if you want to get the page XHR/ Fetch responses
|
||||
/// </summary>
|
||||
public bool OpenNewTab { get; set; } = false;
|
||||
|
||||
public bool EnableResponseCallback { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Exclude urls for XHR/ Fetch responses
|
||||
/// </summary>
|
||||
public string[]? ExcludeResponseUrls { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Only include urls for XHR/ Fetch responses
|
||||
/// </summary>
|
||||
public string[]? IncludeResponseUrls { get; set; }
|
||||
|
||||
public bool UseExistingPage { get; set; } = false;
|
||||
|
||||
public bool WaitForNetworkIdle { get; set; } = true;
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ public class PlaywrightInstance : IDisposable
|
|||
return _contexts[ctxId];
|
||||
}
|
||||
|
||||
public async Task<IPage> NewPage(MessageInfo message, string[]? excludeResponseUrls = null)
|
||||
public async Task<IPage> NewPage(MessageInfo message, bool enableResponseCallback = false, string[]? excludeResponseUrls = null, string[]? includeResponseUrls = null)
|
||||
{
|
||||
var context = await GetContext(message.ContextId);
|
||||
var page = await context.NewPageAsync();
|
||||
|
|
@ -127,13 +127,19 @@ public class PlaywrightInstance : IDisposable
|
|||
var js = @"Object.defineProperties(navigator, {webdriver:{get:()=>false}});";
|
||||
await page.AddInitScriptAsync(js);
|
||||
|
||||
if (!enableResponseCallback)
|
||||
{
|
||||
return page;
|
||||
}
|
||||
|
||||
page.Response += async (sender, e) =>
|
||||
{
|
||||
if (e.Status != 204 &&
|
||||
e.Headers.ContainsKey("content-type") &&
|
||||
e.Headers["content-type"].Contains("application/json") &&
|
||||
(e.Request.ResourceType == "fetch" || e.Request.ResourceType == "xhr") &&
|
||||
(excludeResponseUrls == null || !excludeResponseUrls.Any(url => e.Url.ToLower().Contains(url))))
|
||||
(excludeResponseUrls == null || !excludeResponseUrls.Any(url => e.Url.ToLower().Contains(url))) &&
|
||||
(includeResponseUrls == null || includeResponseUrls.Any(url => e.Url.ToLower().Contains(url))))
|
||||
{
|
||||
Serilog.Log.Information($"{e.Request.Method}: {e.Url}");
|
||||
JsonElement? json = null;
|
||||
|
|
@ -160,7 +166,7 @@ public class PlaywrightInstance : IDisposable
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Serilog.Log.Error(ex.ToString());
|
||||
Serilog.Log.Error($"{e.Url}\r\n" + ex.ToString());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -10,7 +10,9 @@ public partial class PlaywrightWebDriver
|
|||
{
|
||||
var page = args.UseExistingPage ?
|
||||
_instance.GetPage(message.ContextId, pattern: args.Url) :
|
||||
await _instance.NewPage(message, excludeResponseUrls: args.ExcludeResponseUrls);
|
||||
await _instance.NewPage(message, enableResponseCallback: args.EnableResponseCallback,
|
||||
excludeResponseUrls: args.ExcludeResponseUrls,
|
||||
includeResponseUrls: args.IncludeResponseUrls);
|
||||
|
||||
if (args.UseExistingPage && page != null && page.Url == args.Url)
|
||||
{
|
||||
|
|
@ -23,7 +25,9 @@ public partial class PlaywrightWebDriver
|
|||
|
||||
if (args.UseExistingPage && args.OpenNewTab && page != null && page.Url == "about:blank")
|
||||
{
|
||||
page = await _instance.NewPage(message, excludeResponseUrls: args.ExcludeResponseUrls);
|
||||
page = await _instance.NewPage(message, enableResponseCallback: args.EnableResponseCallback,
|
||||
excludeResponseUrls: args.ExcludeResponseUrls,
|
||||
includeResponseUrls: args.IncludeResponseUrls);
|
||||
}
|
||||
|
||||
var response = await page.GotoAsync(args.Url, new PageGotoOptions
|
||||
|
|
|
|||
Loading…
Reference in a new issue