diff --git a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.ChangeListValue.cs b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.ChangeListValue.cs index 7df51ec5..75e8ad6a 100644 --- a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.ChangeListValue.cs +++ b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.ChangeListValue.cs @@ -57,7 +57,10 @@ public partial class PlaywrightWebDriver } var driverService = _services.GetRequiredService(); - var htmlElementContextOut = await driverService.LocateElement(agent, string.Join("", str), context.ElementName, messageId); + var htmlElementContextOut = await driverService.LocateElement(agent, + string.Join("", str), + context.ElementName, + messageId); ILocator element = Locator(htmlElementContextOut); try diff --git a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.ClickButton.cs b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.ClickButton.cs index d7fbed3d..82e9683d 100644 --- a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.ClickButton.cs +++ b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.ClickButton.cs @@ -1,11 +1,11 @@ -using BotSharp.Plugin.WebDriver.Services; - namespace BotSharp.Plugin.WebDriver.Drivers.PlaywrightDriver; public partial class PlaywrightWebDriver { public async Task ClickElement(Agent agent, BrowsingContextIn context, string messageId) { + var driverService = _services.GetRequiredService(); + // Retrieve the page raw html and infer the element path var body = await _instance.Page.QuerySelectorAsync("body"); @@ -23,18 +23,19 @@ public partial class PlaywrightWebDriver var text = await btn.TextContentAsync(); var name = await btn.GetAttributeAsync("name"); var id = await btn.GetAttributeAsync("id"); - str.Add($""); + str.Add(driverService.AssembleMarkup("button", new MarkupProperties + { + Id = id, + Name = name, + Text = text + })); } - var driverService = _services.GetRequiredService(); - var htmlElementContextOut = await driverService.LocateElement(agent, string.Join("", str), context.ElementName, messageId); - - var tags = await _instance.Page.QuerySelectorAllAsync(htmlElementContextOut.TagName); - var button = tags[htmlElementContextOut.Index]; - if (button.AsElement() == null) - { - throw new Exception($"Can't find web element {context.ElementName}"); - } - await button.ClickAsync(); + var htmlElementContextOut = await driverService.LocateElement(agent, + string.Join("", str), + context.ElementName, + messageId); + ILocator element = Locator(htmlElementContextOut); + await element.ClickAsync(); } } diff --git a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.InputUserText.cs b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.InputUserText.cs index 630c7d13..5362602f 100644 --- a/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.InputUserText.cs +++ b/src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.InputUserText.cs @@ -42,7 +42,10 @@ public partial class PlaywrightWebDriver })); } - var htmlElementContextOut = await driverService.LocateElement(agent, string.Join("", str), context.ElementName, messageId); + var htmlElementContextOut = await driverService.LocateElement(agent, + string.Join("", str), + context.ElementName, + messageId); ILocator element = Locator(htmlElementContextOut); try diff --git a/src/Plugins/BotSharp.Plugin.WebDriver/Models/MarkupProperties.cs b/src/Plugins/BotSharp.Plugin.WebDriver/Models/MarkupProperties.cs index 5b7071e7..410bf50c 100644 --- a/src/Plugins/BotSharp.Plugin.WebDriver/Models/MarkupProperties.cs +++ b/src/Plugins/BotSharp.Plugin.WebDriver/Models/MarkupProperties.cs @@ -2,8 +2,8 @@ namespace BotSharp.Plugin.WebDriver.Models; internal class MarkupProperties { - public string Id { get; set; } - public string Name { get; set; } - public string Type { get; set; } - public string Text { get; set; } + public string? Id { get; set; } + public string? Name { get; set; } + public string? Type { get; set; } + public string? Text { get; set; } }