namespace BotSharp.Plugin.WebDriver.UtilFunctions; public class UtilWebLocateElementFn : IFunctionCallback { public string Name => "util-web-locate_element"; public string Indication => "Locating element."; private readonly IServiceProvider _services; private readonly ILogger _logger; public UtilWebLocateElementFn( IServiceProvider services, ILogger logger) { _services = services; _logger = logger; } public async Task Execute(RoleDialogModel message) { var locatorArgs = JsonSerializer.Deserialize(message.FunctionArgs ?? "{}"); var conv = _services.GetRequiredService(); locatorArgs.Highlight = true; var browser = _services.GetRequiredService(); var msg = new MessageInfo { AgentId = message.CurrentAgentId, MessageId = message.MessageId, ContextId = message.CurrentAgentId, }; var result = await browser.LocateElement(msg, locatorArgs); message.Content = $"Locating element {(result.IsSuccess ? "success" : "failed")}"; var webDriverService = _services.GetRequiredService(); var path = webDriverService.GetScreenshotFilePath(message.MessageId); message.Data = await browser.ScreenshotAsync(msg, path); return true; } }