From 6432f225e12c151791c7efe99ec5443140c5732f Mon Sep 17 00:00:00 2001 From: "jason.wang" Date: Wed, 20 Nov 2024 09:06:42 +0800 Subject: [PATCH] issues-34 --- .../Browsing/Models/PageActionArgs.cs | 3 +++ .../PlaywrightWebDriver.GoToPage.cs | 22 ++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Infrastructure/BotSharp.Abstraction/Browsing/Models/PageActionArgs.cs b/src/Infrastructure/BotSharp.Abstraction/Browsing/Models/PageActionArgs.cs index fe575462..32486a09 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Browsing/Models/PageActionArgs.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Browsing/Models/PageActionArgs.cs @@ -47,4 +47,7 @@ public class PageActionArgs public int WaitTime { get; set; } public bool ReadInnerHTMLAsBody { get; set; } = false; + public bool IsScrollPage { get; set; } = false; + public int ScrollCount { get; set; } = 1; + public int ScrollWaitTime { get; set; } = 1; } diff --git a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GoToPage.cs b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GoToPage.cs index 30bd6748..156e17f0 100644 --- a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GoToPage.cs +++ b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GoToPage.cs @@ -8,7 +8,7 @@ public partial class PlaywrightWebDriver var context = await _instance.GetContext(message.ContextId); try { - var page = await _instance.NewPage(message, enableResponseCallback: args.EnableResponseCallback, + var page = await _instance.NewPage(message, enableResponseCallback: args.EnableResponseCallback, responseInMemory: args.ResponseInMemory, responseContainer: args.ResponseContainer, excludeResponseUrls: args.ExcludeResponseUrls, @@ -18,7 +18,7 @@ public partial class PlaywrightWebDriver if (args.OpenNewTab && page != null && page.Url == "about:blank") { - page = await _instance.NewPage(message, + page = await _instance.NewPage(message, enableResponseCallback: args.EnableResponseCallback, responseInMemory: args.ResponseInMemory, responseContainer: args.ResponseContainer, @@ -28,7 +28,7 @@ public partial class PlaywrightWebDriver if (page == null) { - page = await _instance.NewPage(message, + page = await _instance.NewPage(message, enableResponseCallback: args.EnableResponseCallback, responseInMemory: args.ResponseInMemory, responseContainer: args.ResponseContainer, @@ -44,7 +44,7 @@ public partial class PlaywrightWebDriver if (args.Selectors != null) { // 使用传入的选择器列表进行并行等待 - var tasks =args.Selectors.Select(selector => + var tasks = args.Selectors.Select(selector => page.WaitForSelectorAsync(selector, new PageWaitForSelectorOptions { Timeout = args.Timeout > 0 ? args.Timeout : 30000 @@ -77,6 +77,18 @@ public partial class PlaywrightWebDriver await Task.Delay(args.WaitTime * 1000); } + if (args.IsScrollPage) + { + var scrollCount = 0; + while (scrollCount < args.ScrollCount) + { + var previousHeight = await page.EvaluateAsync("document.body.scrollHeight"); + await page.EvaluateAsync("window.scrollTo(0, document.body.scrollHeight)"); + await page.WaitForTimeoutAsync(args.ScrollWaitTime * 1000); + scrollCount++; + }; + } + result.ResponseStatusCode = response.Status; if (response.Status == 200) { @@ -89,7 +101,7 @@ public partial class PlaywrightWebDriver } } else - { + { result.Message = response.StatusText; } }