BotSharp/src/Plugins/BotSharp.Plugin.WebDriver/UtilFunctions/UtilWebActionOnElementFn.cs

43 lines
1.4 KiB
C#
Raw Normal View History

2025-02-03 23:43:04 +00:00
namespace BotSharp.Plugin.WebDriver.UtilFunctions;
public class UtilWebActionOnElementFn : IFunctionCallback
{
public string Name => "util-web-action_on_element";
public string Indication => "Do action on element.";
private readonly IServiceProvider _services;
private readonly ILogger _logger;
public UtilWebActionOnElementFn(
IServiceProvider services,
ILogger<UtilWebActionOnElementFn> logger)
{
_services = services;
_logger = logger;
}
public async Task<bool> Execute(RoleDialogModel message)
{
var locatorArgs = JsonSerializer.Deserialize<ElementLocatingArgs>(message.FunctionArgs);
var actionArgs = JsonSerializer.Deserialize<ElementActionArgs>(message.FunctionArgs);
if (actionArgs.Action == BroswerActionEnum.InputText)
{
actionArgs.PressKey = "Enter";
}
actionArgs.WaitTime = 2;
var conv = _services.GetRequiredService<IConversationService>();
var browser = _services.GetRequiredService<IWebBrowser>();
var result = await browser.ActionOnElement(new MessageInfo
{
AgentId = message.CurrentAgentId,
MessageId = message.MessageId,
ContextId = message.CurrentAgentId,
}, locatorArgs, actionArgs);
message.Content = $"{actionArgs.Action} executed {(result.IsSuccess ? "success" : "failed")}";
return true;
}
}