From b2ac5707ae362c0c5d0a16eca2b734ded5bd8e92 Mon Sep 17 00:00:00 2001 From: Jicheng Lu <103353@smsassist.com> Date: Fri, 22 Mar 2024 14:12:45 -0500 Subject: [PATCH] add web driver get attribute value --- .../Browsing/IWebBrowser.cs | 1 + .../Google/Models/GoogleVideoResult.cs | 15 +++++++++++++++ .../PlaywrightWebDriver.GetAttributeValue.cs | 18 ++++++++++++++++++ .../PlaywrightWebDriver.LocateElement.cs | 2 +- src/WebStarter/appsettings.json | 2 +- 5 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GetAttributeValue.cs diff --git a/src/Infrastructure/BotSharp.Abstraction/Browsing/IWebBrowser.cs b/src/Infrastructure/BotSharp.Abstraction/Browsing/IWebBrowser.cs index 3b4dcfde..376c7cac 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Browsing/IWebBrowser.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Browsing/IWebBrowser.cs @@ -24,4 +24,5 @@ public interface IWebBrowser Task EvaluateScript(string conversationId, string script); Task CloseBrowser(string conversationId); Task SendHttpRequest(BrowserActionParams actionParams); + Task GetAttributeValue(MessageInfo message, ElementLocatingArgs location, BrowserActionResult result); } diff --git a/src/Infrastructure/BotSharp.Abstraction/Google/Models/GoogleVideoResult.cs b/src/Infrastructure/BotSharp.Abstraction/Google/Models/GoogleVideoResult.cs index 750e0541..442290aa 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Google/Models/GoogleVideoResult.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Google/Models/GoogleVideoResult.cs @@ -26,4 +26,19 @@ public class VideoSnippet public string Title { get; set; } public string Description { get; set; } public string ChannelTitle { get; set; } + public VideoThumbnails Thumbnails { get; set; } +} + +public class VideoThumbnails +{ + public ThumbnailData Default { get; set; } + public ThumbnailData Medium { get; set; } + public ThumbnailData High { get; set; } +} + +public class ThumbnailData +{ + public string Url { get; set; } + public decimal Width { get; set; } + public decimal Height { get; set; } } \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GetAttributeValue.cs b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GetAttributeValue.cs new file mode 100644 index 00000000..8b87c2c8 --- /dev/null +++ b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.GetAttributeValue.cs @@ -0,0 +1,18 @@ +namespace BotSharp.Plugin.WebDriver.Drivers.PlaywrightDriver; + +public partial class PlaywrightWebDriver +{ + public async Task GetAttributeValue(MessageInfo message, ElementLocatingArgs location, BrowserActionResult result) + { + var page = _instance.GetPage(message.ConversationId); + ILocator locator = page.Locator(result.Selector); + var value = string.Empty; + + if (!string.IsNullOrEmpty(location?.AttributeName)) + { + value = await locator.GetAttributeAsync(location.AttributeName); + } + + return value ?? string.Empty; + } +} diff --git a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.LocateElement.cs b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.LocateElement.cs index fd46c879..9ec68d20 100644 --- a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.LocateElement.cs +++ b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.LocateElement.cs @@ -45,7 +45,7 @@ public partial class PlaywrightWebDriver } } - if (location.Index > 0) + if (location.Index >= 0) { locator = locator.Nth(location.Index); count = await locator.CountAsync(); diff --git a/src/WebStarter/appsettings.json b/src/WebStarter/appsettings.json index 3187eb99..356279b3 100644 --- a/src/WebStarter/appsettings.json +++ b/src/WebStarter/appsettings.json @@ -224,7 +224,7 @@ "Youtube": { "Endpoint": "https://www.googleapis.com/youtube/v3/search", "RegionCode": "US", - "Part": "id" + "Part": "id,snippet" } },